Systems and methods for training a robot to autonomously travel a route

ABSTRACT

Systems and methods for training a robot to autonomously travel a route. In one embodiment, a robot can detect an initial placement in an initialization location. Beginning from the initialization location, the robot can create a map of a navigable route and surrounding environment during a user-controlled demonstration of the navigable route. After the demonstration, the robot can later detect a second placement in the initialization location, and then autonomously navigate the navigable route. The robot can then subsequently detect errors associated with the created map. Methods and systems associated with the robot are also disclosed.

COPYRIGHT

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent files or records, but otherwise reserves all copyrightrights whatsoever.

BACKGROUND Technological Field

The present application relates generally to, inter alia, roboticsystems and methods of utilizing the same. Specifically, in one aspect,the present disclosure relates to systems and methods for training andoperating a robot to autonomously travel a route.

Background

Presently, programming robots can often involve exhaustive coding thatanticipates, or attempts to anticipate, every situation in which therobot can encounter. Not only is such an approach costly from a time,energy, and computer resource perspective, but this approach can alsolimit the capabilities of the robot. For example, many robots can onlybe effective in controlled environments with predictable or predefinedconditions. These robots may not be effective in dynamically changingenvironments and/or new environments for which the robot was notspecifically programmed. Where robots are programmed with generalcapabilities, the robots may be useful in many different tasks, but maybe ineffective or inefficient at any particular one of those tasks. Onthe flipside, robots that are programmed to perform specific taskseffectively and efficiently may be limited to those tasks and not ableto perform others. Similarly, many present robots can require experttechnicians and other highly skilled workers to program and operatethem. This requirement increases the time and costs of operating therobots.

These challenges are particularly salient in programming robots totravel in routes. For example, in order to program a robot toautonomously navigate a desired path from a first point to a secondpoint, a programmer may have to program a map and also identify eachpoint on the map to which the robot should travel, along with the orderor logic in which the robot should travel to those points. Thatprogrammer may have to program the robot for each environment and inputeach and every route desired, along with maps of the environment. In thealternative, if the programmer programs general rules and logic for therobot to determine routes, that robot may be slow and inefficient infollowing any particular route. In either case, such programming can betime-consuming and also require highly skilled workers to operate therobot. Accordingly, there is a need for improved systems and methods forprogramming robots to travel routes.

SUMMARY

The foregoing needs are satisfied by the present disclosure, whichprovides for, inter alia, apparatus and methods for training andoperating a robot for autonomous navigation. Example implementationsdescribed herein have innovative features, no single one of which isindispensable or solely responsible for their desirable attributes.Without limiting the scope of the claims, some of the advantageousfeatures will now be summarized.

In some implementations of this disclosure, a robot can learn a route bydemonstration and later repeat the demonstrated route while autonomouslynavigating.

In a first aspect a robot is disclosed. In one exemplary implementation,the robot includes a mapping and localization unit configured to createa map of a navigable route and surrounding environment during ademonstration of the navigable route to the robot beginning from aninitialization location. The robot also includes a navigation unitconfigured to autonomously navigate the robot using the map.

In one variant, the navigation unit of the robot is also configured todetermine not to autonomously navigate at least a portion of thenavigable route.

In another variant, the robot further includes a sensor unit configuredto generate sensor data indicative at least in part of objects within asensor range, wherein the navigation unit of the robot is furtherconfigured to autonomously navigate based at least in part on thegenerated sensor data.

In another variant, the robot further has a first actuator unitconfigured to actuate a brush. In another variant, the robot also has asecond actuator unit configured to turn the robot.

In another variant, the robot further has a processor configured toassociate a position on the map with actuation of the first actuatorunit. In another variant, the robot includes a processor configured toassociate a position on the map with actuation of the second actuatorunit.

In another variant, the robot includes a user interface unit configuredto receive a selection of a created map from a user, wherein the robotautonomously navigates at least in part on the received selection.

In another variant, the robot further has a map evaluation unitconfigured to correct errors in the map. In another variant, thecorrection of errors includes machine learning that associates at leastone of the errors in the map with at least a portion of a corrected map.

In another variant, the robot further includes a communication unitconfigured to communicate with a server, wherein the robot sends the mapto the server and receives a verification of the quality of the map.

In a second aspect, methods of training the robot are disclosed. In oneexemplary implementation, the method includes detecting a firstplacement of the robot in an initialization location, creating a map ofa navigable route and surrounding environment during a demonstration ofthe navigable route to the robot beginning from the initializationlocation, detecting a second placement of the robot in theinitialization location, and causing the robot to autonomously navigateat least a portion of the navigable route from the initializationlocation.

In one variant, the method further includes evaluating the created mapfor errors, and based at least in part on the errors, requesting theuser to demonstrate the navigable route again to the robot.

In another variant, the method further includes correcting errors in themap. In another variant, the method further comprises determining not toautonomously navigate at least a portion of the navigable route.

In another variant, the method further includes associating the map ofthe navigable route and surrounding environment with the initializationlocation.

In another variant, the method further includes mapping on the createdmap an action performed by the robot on the navigable route.

In a third aspect, methods of using the robot are disclosed. In oneexemplary implementation, the method includes detecting a firstplacement of the robot in an initialization location, creating a map ofa navigable route and surrounding environment during a demonstration ofthe navigable route to the robot beginning from the initializationlocation, detecting a second placement of the robot in theinitialization location, and causing the robot to autonomously navigateat least a portion of the navigable route from the initializationlocation.

In one variant, the method further includes associating the map of thenavigable route and surrounding environment with the initializationlocation.

In another variant, the method further includes mapping on the createdmap an action performed by the robot on the navigable route.

In a fourth aspect, a non-transitory computer readable medium isdisclosed. In one exemplary implementation, a non-transitorycomputer-readable storage medium having a plurality of instructionsstored thereon is disclosed. The instructions being executable by aprocessing apparatus to operate a robot, the instructions configured to,when executed by the processing apparatus, cause the processingapparatus to: detect a first placement of the robot in an initializationlocation; create a map of a navigable route and surrounding environmentduring a demonstration of the navigable route to the robot beginningfrom the initialization location; detect a second placement of the robotin the initialization location; and cause the robot to autonomouslynavigate at least a portion of the navigable route from theinitialization location.

In one variant, the non-transitory computer-readable storage mediumincludes instructions that when executed by the processing apparatus,further cause the processing apparatus to evaluate the created map forerrors, and based at least in part on the errors, request the user todemonstrate the navigable route again to the robot.

In another variant, the non-transitory computer-readable storage mediumincludes instructions that when executed by the processing apparatus,further cause the processing apparatus to correct errors in the map.

In another variant, the non-transitory computer-readable storage mediumincludes instructions that when executed by the processing apparatus,further cause the processing apparatus to provide instructions to therobot to avoid temporary placed obstacles while autonomously navigatingthe navigable route.

In another variant, the non-transitory computer-readable storage mediumincludes instructions that when executed, further cause the processingapparatus to determine not to autonomously navigate at least a portionof the navigable route.

In another variant, the non-transitory computer-readable storage mediumincludes instructions that when executed, further cause the processingapparatus to associate the map of the navigable route and surroundingenvironment with the initialization location.

In another variant, the creation of the map of a navigable route andsurrounding environment further comprises instructions configured tosense the surrounding environment with a sensor.

In another variant, the non-transitory computer-readable storage mediumincludes instructions that when executed, further cause the processingapparatus to communicate with a server, wherein the robot sends the mapto the server and receives a verification of the quality of the map.

In a fifth aspect, an environment and a robot are disclosed. In oneexemplary implementation, the robot includes a mapping and localizationunit configured to create a map of a navigable route and surroundingenvironment during a demonstration of the navigable route to the robotbeginning from an initialization location. The robot also includes anavigation unit configured to autonomously navigate the robot using themap.

In one variant, the navigation unit of the robot is also configured todetermine not to autonomously navigate at least a portion of thenavigable route. This determination includes a determination to avoid anobstacle of the environment.

In another variant, the robot further includes a sensor unit configuredto generate sensor data indicative at least in part of objects within asensor range, wherein the navigation unit of the robot is furtherconfigured to autonomously navigate the environment based at least inpart on the generated sensor data.

In another variant, the robot further has a first actuator unitconfigured to actuate a brush for cleaning. In another variant, therobot also has a second actuator unit configured to turn the robot inthe environment.

In another variant, the robot further has a processor configured toassociate a position on the map with actuation of the first actuatorunit. In another variant, the robot includes a processor configured toassociate a position on the map with actuation of the second actuatorunit.

There are additional aspects and implementations described in thisdisclosure. For example, some implementations include a non-transitorycomputer-readable storage medium having a plurality of instructionsstored thereon, the instructions being executable by a processingapparatus to operate a robot, the instructions configured to, whenexecuted by the processing apparatus, cause the processing apparatus to:detect a first placement of the robot in an initialization location;create a map of a navigable route and surrounding environment during ademonstration of the navigable route to the robot beginning from theinitialization location; detect a second placement of the robot in theinitialization location; and cause the robot to autonomously navigate atleast a portion of the navigable route from the initialization location.

In some implementations, the non-transitory computer-readable storagemedium includes instructions that when executed by the processingapparatus, further cause the processing apparatus to evaluate thecreated map for errors, and based at least in part on the errors,request the user to demonstrate the navigable route again to the robot.In some implementations, the errors include at least one of adiscontinuity of the navigable route in the map and a discontinuity inthe surrounding environment in the map. In some implementations, theerrors include at least overlapping objects. In some implementations,the errors include a failure to form a closed loop. In someimplementations, the errors include predetermined error patterns in themap.

In some implementations, the non-transitory computer-readable storagemedium includes instructions that when executed by the processingapparatus, further cause the processing apparatus to correct errors inthe map. In some implementations, the correction of errors includesmachine learning that associates at least one of the errors in the mapwith at least a portion of a corrected map.

In some implementations, the non-transitory computer-readable storagemedium includes instructions that when executed by the processingapparatus, further cause the processing apparatus to provideinstructions to the robot to avoid temporary placed obstacles whileautonomously navigating the navigable route. In some implementations,the non-transitory computer-readable storage medium includesinstructions that when executed, further cause the processing apparatusto determine not to autonomously navigate at least a portion of thenavigable route. In some implementations, the determination not toautonomously navigate at least a portion of the navigable route includesa determination to avoid an obstacle.

In some implementations, the robot further comprises instructionsconfigured to cause the processing apparatus to receive a selection ofthe navigable route from a user interface. In some implementations, thenon-transitory computer-readable storage medium includes instructionsthat when executed, further cause the processing apparatus to associatethe map of the navigable route and surrounding environment with theinitialization location.

In some implementations, the causing of the robot to autonomouslynavigate further comprises instructions configured to cause theprocessing apparatus to determine the navigable route based at least inpart on the association of the map of the navigable route andsurrounding environment to the initialization location. In someimplementations, the causing of the robot to autonomously navigatefurther comprises instructions configured to cause the processingapparatus to navigate based at least in part on the created map. In someimplementations, the robot is a floor cleaner. In some implementations,the robot is a floor scrubber.

In some implementations, the created map comprises an indicationrepresentative at least in part of an action performed by the robot onthe navigable route. In some implementations, the action is cleaning afloor. In some implementations, the action is a turn.

In some implementations, the creation of the map of a navigable routeand surrounding environment further comprises instructions configured tosense the surrounding environment with a sensor. In someimplementations, the creation of the map of a navigable route andsurrounding environment further comprises instructions configured tosense the surrounding environment with a three-dimensional sensor.

In some implementations, the non-transitory computer-readable storagemedium includes instructions that when executed, further cause theprocessing apparatus to communicate with a server, wherein the robotsends the map to the server and receives a verification of the qualityof the map.

As another example, some implementations include a method of operating arobot, comprising: detecting a first placement of the robot in aninitialization location; causing a creation of a map of a navigableroute and surrounding environment during a demonstration of thenavigable route to the robot beginning from the initialization location;detecting a second placement of the robot in the initializationlocation; and causing the robot to autonomously navigate at least aportion of the navigable route from the initialization location.

In some implementations, the method further comprises evaluating thecreated map for errors, and based at least in part on the errors,requesting the user to demonstrate the navigable route again to therobot. In some implementations, evaluating the created map for errorsincludes identifying overlapping objects. In some implementations,evaluating the created map for errors includes identifying a failure toform a closed loop. In some implementations, evaluating the created mapfor errors includes identifying predetermined patterns in the map. Insome implementations, the method further comprises sending the map to aserver and receiving a signal from the server indicative at least inpart of the quality of the map.

In some implementations, the method further comprises correcting errorsin the map. In some implementations, correcting errors includes machinelearning that associates at least one of the errors in the map with atleast a portion of a corrected map.

In some implementations, the method further comprises determining not toautonomously navigate at least a portion of the navigable route. In someimplementations, determining not to autonomously navigate at least aportion of the navigable route includes determining to avoid anobstacle.

In some implementations, the demonstration comprises receiving controlsignals from a user. In some implementations, creating the map of anavigable route and surrounding environment further comprises sensingthe surrounding environment with a sensor. In some implementations,creating the map of a navigable route and surrounding environmentfurther comprises sensing the surrounding environment with athree-dimensional sensor.

In some implementations, causing the robot to autonomously navigatefurther comprises receiving a selection of the navigable route from auser interface. In some implementations, causing the robot toautonomously navigate comprises navigating using the map of thenavigable route and surrounding environment.

In some implementations, the method further comprises associating themap of the navigable route and surrounding environment with theinitialization location.

In some implementations, the method further comprises determining thenavigable route based at least in part on the association of the map ofthe navigable route and surrounding environment to the initializationlocation.

In some implementations, the method further comprises mapping on thecreated map an action performed by the robot on the navigable route. Insome implementations, the action comprises cleaning a floor. In someimplementations, the action comprises turning.

As another example, some implementations include a non-transitorycomputer-readable storage medium having a plurality of instructionsstored thereon, the instructions being executable by a processingapparatus to operate a robot, the instructions configured to, whenexecuted by the processing apparatus, cause the processing apparatus tocreate a map of a navigable route and surrounding environment during ademonstration of the navigable route to the robot beginning from aninitialization location.

In some implementations, the created map further comprises an indicationrepresentative at least in part of an action performed by the robot onthe navigable route. In some implementations, the action is cleaning afloor. In some implementations, the robot is a floor cleaner. In someimplementations, the demonstration of the navigation route is a computersimulation.

As another example, some implementations include a robot comprising: amapping and localization unit configured to create a map of a navigableroute and surrounding environment during a demonstration of thenavigable route to the robot beginning from an initialization location;and a navigation unit configured to autonomously navigate the robotusing the map.

In some implementations, the navigation unit is further configured todetermine not to autonomously navigate at least a portion of thenavigable route. In some implementations, the determination not toautonomously navigate includes a determination to avoid an obstacle.

In some implementations, the robot further comprises a sensor unitconfigured to generate sensor data indicative at least in part ofobjects within a sensor range of the robot, wherein the navigation unitis further configured to autonomously navigate based at least in part onthe generated sensor data.

In some implementations, the robot further comprises a first actuatorunit configured to actuate a brush. In some implementations, the robotfurther comprises a second actuator unit configured to turn the robot.

In some implementations, the robot further comprises a processorconfigured to associate a position on the map with actuation of thefirst actuator unit. In some implementations, the robot furthercomprises a processor configured to associate a position on the map withactuation of the second actuator unit.

In some implementations, the robot further comprises a user interfaceunit configured to receive a selection of a created map from a user,wherein the robot autonomously navigates at least in part on thereceived selection.

In some implementations, the robot further comprises map evaluation unitconfigured to correct errors in the map. In some implementations, thecorrection of errors includes machine learning that associates at leastone of the errors in the map with at least a portion of a corrected map.

In some implementations, the errors include at least overlappingobjects. In some implementations, the errors include failure to form aclosed loop. In some implementations, the errors include predeterminedpatterns in the map.

In some implementations, the map evaluation unit is further configuredto correct errors in the map. In some implementations, the correction oferrors includes machine learning that associates at least one of theerrors in the map with at least a portion of a corrected map.

In some implementations, the processor is further configured toassociate the map of the navigable route and surrounding environmentwith the initialization location.

In some implementations, the processor is further configured todetermine the navigable route based at least in part on the associationof the map of the navigable route and surrounding environment to theinitialization location. In some implementations, the navigation unit isfurther configured the causation of the robot to autonomously navigatefurther comprises instructions configured to cause the processingapparatus to navigate based at least in part on the created map.

In some implementations, the robot further comprises a communicationunit configured to communicate with a server, wherein the robot sendsthe map to the server and receives a verification of the quality of themap.

These and other objects, features, and characteristics of the presentdisclosure, as well as the methods of operation and functions of therelated elements of structure and the combination of parts and economiesof manufacture, will become more apparent upon consideration of thefollowing description and the appended claims with reference to theaccompanying drawings, all of which form a part of this specification,wherein like reference numerals designate corresponding parts in thevarious figures. It is to be expressly understood, however, that thedrawings are for the purpose of illustration and description only andare not intended as a definition of the limits of the disclosure. Asused in the specification and in the claims, the singular form of “a”,“an”, and “the” include plural referents unless the context clearlydictates otherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosed aspects will hereinafter be described in conjunction withthe appended drawings, provided to illustrate and not to limit thedisclosed aspects, wherein like designations denote like elements.

FIG. 1A is an overhead view of one example route autonomously navigatedby a robot in accordance with implementations of the present disclosure.

FIG. 1B is an overhead view of the example route illustrated in FIG. 1Aillustrating a user demonstrating the route to the robot in accordancewith implementations of the present disclosure.

FIG. 1C is an overhead view of an alternative example route autonomouslynavigated by the robot shown in FIGS. 1A and 1B, where the robot avoidsobjects in accordance with the principles of the present disclosure.

FIG. 2 is a process flow diagram of an exemplary method for training arobot to autonomously navigate an example route in accordance with theprinciples of the present disclosure.

FIG. 3 is a functional block diagram of one exemplary robot inaccordance with some implementations of the present disclosure.

FIG. 4 is a process flow diagram of an exemplary method in which anexemplary robot learns and then travels an example route in accordancewith the principles of the present disclosure.

FIG. 5A is one exemplary user interface for receiving an input from auser in order to begin teaching or choosing an example route inaccordance with the principles of the present disclosure.

FIGS. 5B-5D are overhead views of an exemplary robot detecting aninitialization location and initializing an example orientation andexample position in accordance with the principles of the presentdisclosure.

FIG. 5E is an overhead view of an exemplary robot, where robot emits anenergy pattern in accordance with the principles of the presentdisclosure.

FIG. 6A is a side elevation view illustrating a user controlling a robotwhile demonstrating an exemplary autonomous navigation route for therobot in accordance with the principles of the present disclosure.

FIG. 6B illustrates various side elevation views of exemplary body formsfor a floor scrubber in accordance with the principles of the presentdisclosure.

FIG. 6C illustrates various side elevation views of exemplary body formsfor a robot in accordance with the principles of the present disclosure.

FIG. 6D is an overhead view of a user controlling a robot while therobot senses its surroundings in accordance with the principles of thepresent disclosure.

FIGS. 7A-7B illustrate various example maps generated by a robot as ittravels in an environment in accordance with the principles of thepresent disclosure.

FIGS. 8A-8B illustrate various example mapped objects as they may appearin a map, where FIG. 8A demonstrates one set of example objects that aresubstantially parallel with one another, while FIG. 8B demonstratesanother set of example objects that are not substantially parallel withone another in accordance with the principles of the present disclosure.

FIG. 8C is an overhead view of a mask that is used to search a map forsubstantially parallel objects in accordance with the principles of thepresent disclosure.

FIG. 9A is an overhead view of an exemplary route discontinuity betweenroute portions of a map in accordance with the principles of the presentdisclosure.

FIG. 9B is an overhead view of an object discontinuity between objectportions of a map in accordance with the principles of the presentdisclosure.

FIG. 9C is an overhead view of a mapped portion that has an exemplarydiscontinuity that includes both a route discontinuity and an objectdiscontinuity in accordance with the principles of the presentdisclosure.

FIG. 10 is an overhead view of a mapped portion having exemplaryoverlapping objects in accordance with the principles of the presentdisclosure.

FIG. 11A is an overhead view of a robot travelling in an exemplaryclosed loop route, where the example initialization location issubstantially similar to the example end location in accordance with theprinciples of the present disclosure.

FIG. 11B is an exemplary mapping error where a robot associates themapping error with a corrected route in accordance with the principlesof the present disclosure.

FIG. 12 is an example user interface that can be used for routeselection in accordance with the principles of the present disclosure.

FIG. 13 is a process flow diagram of an exemplary method for operating arobot in accordance with the principles of the present disclosure.

All Figures disclosed herein are © Copyright 2016 Brain Corporation. Allrights reserved.

DETAILED DESCRIPTION

Various aspects of the novel systems, apparatuses, and methods disclosedherein are described more fully hereinafter with reference to theaccompanying drawings. This disclosure can, however, be embodied in manydifferent forms and should not be construed as limited to any specificstructure or function presented throughout this disclosure. Rather,these aspects are provided so that this disclosure will be thorough andcomplete, and will fully convey the scope of the disclosure to thoseskilled in the art. Based on the teachings herein, one skilled in theart should appreciate that the scope of the disclosure is intended tocover any aspect of the novel systems, apparatuses, and methodsdisclosed herein, whether implemented independently of, or combinedwith, any other aspect of the disclosure. For example, an apparatus canbe implemented or a method can be practiced using any number of theaspects set forth herein. In addition, the scope of the disclosure isintended to cover such an apparatus or method that is practiced usingother structure, functionality, or structure and functionality inaddition to, or other than, the various aspects of the disclosure setforth herein. It should be understood that any aspect disclosed hereincan be implemented by one or more elements of a claim.

Although particular implementations are described herein, manyvariations and permutations of these implementations fall within thescope of the disclosure. Although some benefits and advantages of theimplementations are mentioned, the scope of the disclosure is notintended to be limited to particular benefits, uses, and/or objectives.The detailed description and drawings are merely illustrative of thedisclosure rather than limiting, the scope of the disclosure beingdefined by the appended claims and equivalents thereof.

The present disclosure provides for improved systems and methods ofoperating a robot for autonomous navigation. As used herein, a robot caninclude mechanical or virtual entities configured to carry out complexseries of actions automatically. In some cases, robots can beelectro-mechanical machines that are guided by computer programs orelectronic circuitry. In some cases, robots can includeelectro-mechanical machines that are configured for autonomousnavigation, where the robot can move from one location to another withlittle to no user control. Such autonomously navigating robots caninclude autonomous cars, floor cleaners (e.g., floor scrubbers, vacuums,etc.), rovers, drones, and the like. In some implementations, some ofthe systems and methods described in this disclosure can be implementedto a virtual environment, where a virtual robot can learn demonstratedroutes in a simulated environment (e.g., in a computer simulation) withcharacteristics of the physical world. After learning those routes, therobot can then autonomously navigate the learned routes in the simulatedenvironment and/or in the real world using systems and methods disclosedin this disclosure.

Detailed descriptions of the various embodiments and variants of thesystem and methods of the disclosure are now provided. While primarilydiscussed in the context of robotic floor cleaners, it will beappreciated that the described systems and methods contained herein canbe used in other robots including, for example, any autonomouslynavigating robot. Myriad other exemplary implementations or uses for thetechnology described herein would be readily envisaged by those ofordinary skill, given the contents of the present disclosure.

Advantageously, the systems and methods of this disclosure at least: (i)reduce or eliminate the need for environment-specific programming; (ii)reduce or eliminate the need for highly skilled technicians to program arobot; (iii) provide application-specific performance from a generallyprogrammed robot; (iv) obviate or reduce the need for task-specificprogramming (e.g., such as how close to navigate to obstacles forcleaning; and (v) enable effective autonomous navigation of robots.Other advantages are readily discernable by one of ordinary skill giventhe contents of the present disclosure.

For example, by training robots to travel routes by demonstration, auser does not have to program every route beforehand. Advantageously,this can allow a user to train a robot to navigate environments that theuser had not anticipated beforehand. Also, a user may not utilize anyparticular expertise to train the robot. For example, a user may nothave to know computer science and/or be educated on how to program therobot. Instead, a user may just know how to perform the task that he/shedesires the robot to do. For example, where the robot is a floorcleaner, the user may just know how to clean the floor, which he/she candemonstrate to the robot.

In some circumstances, training robots to travel routes can allow robotsto perform specific tasks to specification without having to identifyand program in each of those specifications. By way of illustration,where a robot is a floor scrubbing unit, it may be desirable for thefloor scrubbing unit to drive a certain distance from a wall, shelf,etc. A user can demonstrate those distances as it trains the robot andthe robot, in some cases, can repeat those distances.

Moreover, training a robot that can learn a navigable route can allow arobot to be specifically programmed to efficiently navigate a particularenvironment while also being generally programmed to perform in manyenvironments. Advantageously, this allows such robots to have thebenefit of both being optimized in particular applications, yet havingthe ability, and flexibility, to perform in a variety of applications.

In some implementations, map and routes can be verified and/or validatedbefore navigation. This verification and/or validation can preventaccidents and/or situations where a robot may crash into walls and/orobstacles because of a poor quality map and/or route.

FIG. 1A illustrates an overhead view of an example route 106autonomously navigated by robot 102 through implementations of thisdisclosure. Robot 102 can autonomously navigate through environment 100,which can comprise various objects 108, 110, 112, 118. Robot 102 canstart at an initialization location 104 and end at an end location 114.

By way of illustration, in some implementations robot 102 can be arobotic floor cleaner, such as a robotic floor scrubber, vacuum cleaner,steamer, mop, sweeper, and the like. Environment 100 can be a spacehaving floors that are desired to be cleaned. For example, Environment100 can be a store, warehouse, office building, home, storage facility,etc. One or more of objects 108, 110, 112, 118 can be shelves, displays,objects, items, people, animals, or any other entity or thing that maybe on the floor or otherwise impede the robot's ability to navigatethrough the environment. Route 106 can be the cleaning path traveled byrobot 102. Route 106 can follow a path that weaves between objects 108,110, 112, 118 as illustrated in example route 106. For example, whereobjects 108, 110, 112, 118 are shelves in a store, robot 102 can goalong the aisles of the store and clean the floors of the aisles.However, other routes are also contemplated, such as, withoutlimitation, weaving back and forth along open floor areas and/or anycleaning path a user would use to clean the floor. Accordingly, one ormore of routes 106, 116, 126 illustrated in FIGS. 1A, 1B and 1C,respectively, can appear differently as illustrated and are meant merelyas illustrative examples. As illustrated, one example of environment 100is shown, however, it should be appreciated that environment 100 cantake on any number of forms and arrangements (e.g., of any size,configuration, and layout of a room or building) and is not limited bythis disclosure.

In route 106, robot 102 can begin at initialization location 104, whichcan be its starting point, and clean along route 106 until it reachesend location 114, where it can stop cleaning. End location 114 can bedesignated by a user 604, described with reference to FIG. 6A. In somecases, end location 114 can be the location in route 106 after whichrobot 102 has cleaned the desired area of floor. In some cases, endlocation 114 can be the same, or substantially similar, asinitialization location 104 so that robot 102 performs substantially aclosed loop in cleaning and ends up near its starting point,initialization location 104. In some cases, end location 114 can be alocation for storage for robot 102, such as a temporary parking spot,storage room or closet, and the like. In some cases, end location 114can be the point where user 604 decided to stop cleaning and trainingrobot 102. Robot 102 may or may not clean at every point along route106. For example, where robot 102 is a robotic floor scrubber, thecleaning system (e.g., water flow, cleaning brushes, etc.) of robot 102may only be operating in some portions of route 106 and not othersand/or in some trajectories (e.g., while moving in a certain directionor in a particular sequence along route 106). Such may be desirable whenonly some areas of the floor are to be cleaned but not others. In suchcases, robot 102 can turn on a cleaning system in areas where user 604demonstrated for robot 102 to clean, and turn off the cleaning systemotherwise.

FIG. 1B illustrates an overhead view of user 604 demonstrating route 116to robot 102 before robot 102 autonomously travels route 106 inenvironment 100. In demonstrating route 116, a user can start robot 102at initialization location 104. Robot 102 can then weave around objects108, 110, 112, 118. Robot 102 can finally end at end location 114. Insome cases, autonomously navigated route 106 can be exactly the same asdemonstrated route 116. In some cases, route 106 might not be preciselythe same as route 116, but can be substantially similar. For example, asrobot 102 navigates route 106, robot 102 uses its sensors (e.g., sensors560A-D and/or sensors 568A-B as will be described with reference toFIGS. 5B-E) to sense where it is in relationship to its surrounding.Such sensing may be imprecise in some instances, which may cause robot102 to not navigate the precise route that had been demonstrated androbot 102 had been trained to follow. In some cases, small changes toenvironment 100, such as the moving of shelves and/or changes in theitems on the shelves, can cause robot 102 to deviate from route 116 whenit autonomously navigates route 106. As another example, as illustratedin FIG. 1C robot 102 may avoid objects 130, 132 by turning around themwhen autonomously navigating route 126, which can be another routetraveled by robot 102 based at least in part on demonstrated route 116.Objects 130, 132 might not have been present (and avoided) when the userdemonstrated route 116. For example, objects 130, 132 may be temporarilyplaced and/or transient objects/items, and/or transient and/or dynamicchanges to the environment 100. As another example, user 604 may havedone a poor job demonstrating route 116. For example, user 604 may havecrashed and/or bumped into a wall, shelf, object, obstacle, etc. Inthese cases, robot 102 can store in memory (e.g., memory 302) one ormore actions that it can correct, such as crashing and/or bumping to awall, shelf, object, obstacle, etc. When robot 102 then autonomouslynavigates demonstrated route 116 as route 126, robot 102 can correctsuch actions and not perform them (e.g., not crash and/or bump into awall, shelf, object, obstacle, etc.) when it is autonomously navigating.In this way, robot 102 can determine not to autonomously navigate atleast a portion of a navigable route, such as a demonstrated route. Insome implementations, determining not to autonomously navigate at leasta portion of the navigable route includes determining when to avoid anobstacle and/or object.

As previously mentioned, as a user demonstrates route 116, the user canturn on and off the cleaning system of robot 102, or perform otheractions, in order to train robot 102 where (e.g., at what position),and/or along what trajectories, to clean along route 116 (andsubsequently when robot 102 autonomously cleans route 106). The robotcan record these actions in memory 302 and later perform them whenautonomously navigating. These actions can include any actions thatrobot 102 may perform, such as turning, turning on/off water, sprayingwater, turning on/off vacuums, moving vacuum hose positions,gesticulating an arm, raising/lowering a lift, moving a sensor, turningon/off a sensor, etc.

FIG. 2 illustrates a process flow diagram of an exemplary method 200 fortraining robot 102 to autonomously navigate route 106. Portion 202includes positioning robot 102 in initialization location 104. Thisfirst placement of robot 102 into initialization location 104 can beperformed by a user 604 (later described with reference to FIG. 6), whocan be a janitor, custodian, or any other person, who drives, remotecontrols, pushes, or otherwise controls robot 102 to move it intoinitialization location 104. For example, user 604 can cause controlsignals to be sent to robot 102. Robot 102 can receive those controlsignals as instructions for movement.

Returning back to FIG. 2, portion 204 includes demonstrating navigationroute 116 to robot 102. By way of illustration using FIG. 1B, user 604can demonstrate to robot 102 by, without limitation, driving, remotecontrolling, pushing, or otherwise controlling robot 102 along route116. For example, user 604 can cause control signals to be sent to robot102. Robot 102 can receive those control signals as instructions formovement. A plurality of these movements can, together, form thedemonstrated route. In this way, user 604 can demonstrate to robot 102the desired route for travelling. In the context of robotic floorcleaners, demonstrated route 116 can be the desired route for cleaningthe floor. In this way, user 604 trains robot 102 how to clean thefloor.

Returning back to FIG. 2, portion 206 includes positioning robot 102 ininitialization location 104 once again. This second placement of robot102 into initialization location 104 can occur at a later point in timeafter portion 204, such as substantially right after the demonstrationof portion 204, or at some later time, such as hours later, days later,weeks later, or whenever the user 604 desires to clean the floor.

Returning back to FIG. 2, portion 208 includes initiating autonomousnavigation. In some cases, after a user has initiated autonomousnavigation, robot 102 can travel along route 106 (or route 126 in somecases), which can be substantially similar to demonstrated route 116. Insome implementations, user 604 can select the demonstrated route on auser interface, as will be described with reference to FIG. 11A. By wayof illustration using FIG. 1A, robot 102 can then navigate route 106, ora route substantially similar to route 106, autonomously frominitialization location 104 to end location 114.

FIG. 3 illustrates a functional block diagram of example robot 102 insome implementations. As illustrated in FIG. 3, robot 102 includescontroller 304, memory 302, power supply 306, and operative units 308,each of which can be operatively and/or communicatively coupled to eachother and each other's components and/or subcomponents. Controller 304controls the various operations performed by robot 102. Although aspecific implementation is illustrated in FIG. 3, it is appreciated thatthe architecture may be varied in certain implementations as would bereadily apparent to one of ordinary skill given the contents of thepresent disclosure.

Controller 304 can include one or more processors (e.g.,microprocessors) and other peripherals. As used herein, the termsprocessor, microprocessor, and digital processor can include any type ofdigital processing devices such as, without limitation, digital signalprocessors (“DSPs”), reduced instruction set computers (“RISC”),general-purpose (“CISC”) processors, microprocessors, gate arrays (e.g.,field programmable gate arrays (“FPGAs”)), programmable logic device(“PLDs”), reconfigurable computer fabrics (“RCFs”), array processors,secure microprocessors, and application-specific integrated circuits(“ASICs”). Such digital processors may be contained on a single unitaryintegrated circuit die, or distributed across multiple components.

Controller 304 can be operatively and/or communicatively coupled tomemory 302. Memory 302 can include any type of integrated circuit orother storage device adapted for storing digital data including, withoutlimitation, read-only memory (“ROM”), random access memory (“RAM”),non-volatile random access memory (“NVRAM”), programmable read-onlymemory (“PROM”), electrically erasable programmable read-only memory(“EEPROM”), dynamic random-access memory (“DRAM”), Mobile DRAM,synchronous DRAM (“SDRAM”), double data rate SDRAM (“DDR/2 SDRAM”),extended data output RAM (“EDO”), fast page mode RAM (“FPM”), reducedlatency DRAM (“RLDRAM”), static RAM (“SRAM”), “flash” memory (e.g.,NAND/NOR), memristor memory, pseudostatic RAM (“PSRAM”), etc. Memory 302can provide instructions and data to controller 304. For example, memory302 can be a non-transitory, computer-readable storage medium having aplurality of instructions stored thereon, the instructions beingexecutable by a processing apparatus (e.g., controller 304) to operaterobot 102. In some cases, the instructions can be configured to, whenexecuted by the processing apparatus, cause the processing apparatus toperform the various methods, features, and/or functionality described inthis disclosure. Accordingly, controller 304 can perform logical andarithmetic operations based on program instructions stored within memory302.

Operative units 308 can be coupled to controller 304, or any othercontroller, to perform the various operations described in thisdisclosure. One or more, or none, of the modules in operative units 308can be included in some implementations. Throughout this disclosure,reference may be made to various controllers and/or processors. In someimplementations, a single controller (e.g., controller 304) can serve asthe various controllers and/or processors described. In otherimplementations, different controllers and/or processors can be used,such as controllers and/or processors used particularly for one or moreof operative units 308. Controller 304 can send and/or receive signals,such as power signals, control signals, sensor signals, interrogatorysignals, status signals, data signals, electrical signals and/or anyother desirable signals, including discrete and analog signals tooperative units 308. Controller 304 can coordinate and/or manageoperative units 308, and/or set timings (e.g., synchronously orasynchronously), turn on/off, control power budgets, receive/sendnetwork instructions and/or updates, update firmware, send interrogatorysignals, receive and/or send statuses, and/or perform any operations forrunning features of robot 102.

Operative units 308 can include various units that perform functions forrobot 102. For example, units of operative units 308 can include mappingand localization units 312, sensor units 314, map evaluation units 324,actuator units 318, communication units 316, navigation units 326, anduser interface units 322. Operative units 308 can also comprise otherunits that provide the various functionality of robot 102. In somecases, the units of operative units 308 can be instantiated in softwareor hardware or both software and hardware. For example, in some cases,units of operative unit 308 can comprise computer-implementedinstructions executed by a controller. In some cases, units of operativeunit 308 can comprise hardcoded logic. In some cases, units of operativeunit 308 can comprise both computer-implemented instructions executed bya controller and hardcoded logic. Where operative units 308 areimplemented at least in part in software, operative units 308 caninclude units/modules of code configured to provide one or morefunctionalities.

In some implementations, sensor units 314 can comprise systems that candetect characteristics within and/or around robot 102. Sensor units 314can include sensors that are internal to robot 102 or external, and/orhave components that are partially internal and/or partially external.Sensors unit 314 can include exteroceptive sensors such as sonar, lidar,radar, lasers, video cameras, infrared cameras, 3D sensors, 3D cameras,and/or any other sensor known in the art. Sensor units 314 can alsoinclude proprioceptive sensors, such as accelerometers, inertialmeasurement units, odometers, gyroscopes, speedometers, and the like. Insome implementations, sensor units 314 can collect raw measurements(e.g., currents, voltages, resistances gate logic, etc.) and/ortransformed measurements (e.g., distances, angles, detected points inobstacles, etc.).

In some implementations, mapping and localization units 312 can includesystems and methods that can computationally construct and update map700 (as will be described with reference to FIGS. 7A-7B) of environment100 (or any other generated map of any environment) as robot 102navigates environment 100 (or any other environment). Mapping andlocalization units 312 can both map environment 100 and localize therobot 102 (e.g., find the position) robot 102 in map 700. At the sametime, mapping and localization units 312 can record a demonstrated route(e.g., route 116) in map 700 (e.g., mapped route 716). The mapping canbe performed by imposing data obtained at least in part by sensor units314 into a two-dimensional (“2D”), three-dimensional (“3D”), and/orfour-dimensional (“4D”) map representative at least in part of theenvironment 100. For example, map 700 can include depictionsrepresentative at least in part of obstacles and/or objects detected byrobot 102. Map 700 can also record demonstrated routes, such as mappedroute 716 as will be described with reference to FIGS. 7A-7B. Forexample, mapped route 716 can include coordinates (e.g., x and y in a 2Dmap and x, y, and z in a 3D map) based at least in part on the relativeposition of robot 102 (e.g., including one or more of location,displacement, and orientation) to a reference, such as initializationlocation 104. The coordinates can include an orientation (e.g., adisplacement angle) of robot 102 at any given point relative to areference, such as initialization location 104. As used herein, the termposition has its ordinary and customary meaning. For example, in somecases, position can include a location in terms of displacement,coordinates, etc. of an object, robot 102, etc. In some cases, positioncan also include an orientation of an object, robot 102, etc.Accordingly, in some cases, the terms position and pose may be usedinterchangeably to include one or more of location, displacement, andorientation. Map 700, created through the demonstration process, canrecord substantially the whole environment that robot 102 sensed in oneor more demonstrations/trainings. For this reason, some may call map 700a global map. In some cases, map 700 can be static in that after thedemonstration, map 700 is substantially not updated. In someimplementations, map 700 and mapped route 716 can also be generatedseparately (e.g., by a user using a computer) and uploaded onto robot102.

Mapping and localization units 312 can also receive sensor data fromsensor units 314 to localize (e.g., position) robot 102 in map 700. Insome implementations, mapping and localization units 312 can includelocalization systems and methods that allow robot 102 to localize itselfin the coordinates of map 700. Based at least in part on data fromsensors 314, mapping and localization unit 312 can infer the position ofrobot 102 in the coordinates of map 700 of environment 100. The abilityto localize robot 102 with coordinates of map 700 can allow robot 102 tonavigate environment 100 using map 700 and approximate where robot 102is on mapped route 716.

In some implementations, communication units 316 can include one or morereceivers, transmitters, and/or transceivers. Communication units 316can be configured to send/receive a transmission protocol, such asBLUETOOTH®, ZIGBEE®, Wi-Fi, induction wireless data transmission, radiofrequencies, radio transmission, radio-frequency identification(“RFID”), near-field communication (“NFC”), global system for mobilecommunications (“GSM”), infrared, network interfaces, cellulartechnologies such as 3G (3GPP/3GPP2), high-speed downlink packet access(“HSDPA”), high-speed uplink packet access (“HSUPA”), time divisionmultiple access (“TDMA”), code division multiple access (“CDMA”) (e.g.,IS-95A, wideband code division multiple access (“WCDMA”), etc.),frequency hopping spread spectrum (“FHSS”), direct sequence spreadspectrum (“DSSS”), global system for mobile communication (“GSM”),Personal Area Network (“PAN”) (e.g., PAN/802.15), worldwideinteroperability for microwave access (“WiMAX”), 802.20, long termevolution (“LTE”) (e.g., LTE/LTE-A), time division LTE (“TD-LTE”),global system for mobile communication (“GSM”),narrowband/frequency-division multiple access (“FDMA”), orthogonalfrequency-division multiplexing (“OFDM”), analog cellular, cellulardigital packet data (“CDPD”), satellite systems, millimeter wave ormicrowave systems, acoustic, infrared (e.g., infrared data association(“IrDA”)), and/or any other form of wireless data transmission.

As used herein, network interfaces can include any signal, data, orsoftware interface with a component, network, or process including,without limitation, those of the FireWire (e.g., FW400, FW800, FWS800T,FWS1600, FWS3200, etc.), universal serial bus (“USB”) (e.g., USB 1.X,USB 2.0, USB 3.0, USB Type-C, etc.), Ethernet (e.g., 10/100, 10/100/1000(Gigabit Ethernet), 10-Gig-E, etc.), multimedia over coax alliancetechnology (“MoCA”), Coaxsys (e.g., TVNET™), radio frequency tuner(e.g., in-band or OOB, cable modem, etc.), Wi-Fi (802.11), WiMAX (e.g.,WiMAX (802.16)), PAN (e.g., PAN/802.15), cellular (e.g., 3G,LTE/LTE-A/TD-LTE/TD-LTE, GSM, etc.), IrDA families, etc. As used herein,Wi-Fi can include one or more of IEEE-Std. 802.11, variants of IEEE-Std.802.11, standards related to IEEE-Std. 802.11 (e.g., 802.11a/b/g/n/ac/ad/af/ah/ai/aj/aq/ax/ay), and/or other wireless standards.

Communication units 316 can also be configured to send/receive atransmission protocol over wired connections, such as any cable that hasa signal line and ground. For example, such cables can include Ethernetcables, coaxial cables, Universal Serial Bus (“USB”), FireWire, and/orany connection known in the art. Such protocols can be used bycommunication units 316 to communicate to external systems, such ascomputers, smart phones, tablets, data capture systems, mobiletelecommunications networks, clouds, servers, or the like. Communicationunits 316 can be configured to send and receive signals comprising ofnumbers, letters, alphanumeric characters, and/or symbols. In somecases, signals can be encrypted, using algorithms such as 128-bit or256-bit keys and/or other encryption algorithms complying with standardssuch as the Advanced Encryption Standard (“AES”), RSA, Data EncryptionStandard (“DES”), Triple DES, and the like. Communication 316 can beconfigured to send and receive statuses, commands, and otherdata/information. For example, communication units 316 can communicatewith a user controller to allow the user to control robot 102.Communication units 316 can communicate with a server/network in orderto allow robot 102 to send data, statuses, commands, and othercommunications to the server. The server can also be communicativelycoupled to computer(s) and/or device(s) that can be used to monitorand/or control robot 102 remotely. Communication units 316 can alsoreceive updates (e.g., firmware or data updates), data, statuses,commands, and other communications from a server for robot 102 and/orits operative units 308.

In some implementations, actuator units 318 can include actuators suchas electric motors, gas motors, driven magnet systems, solenoid/ratchetsystems, piezoelectric systems (e.g., inchworm motors), magnetostrictiveelements, gesticulation, and/or any way of driving an actuator known inthe art. By way of illustration, such actuators can actuate wheels orother displacement enabling drivers (e.g., mechanical legs, jet engines,propellers, hydraulics, etc.) for robot 102 to navigate throughenvironment 100 or any other environment. In some cases, actuators units318 can include actuators configured for actions and/or action-specifictasks, such as mobilizing brushes for floor cleaning, moving (e.g.,moving up, down, left, right, forward, back) squeegees, turning on/offwater, spraying water, turning on/off vacuums, moving vacuum hosepositions, gesticulating an arm, raising/lowering a lift, turning acamera and/or any sensor of sensor units 314, and/or any movementdesired for robot 102 to perform an action.

In some implementations, user interface units 322 can be configured toenable a user (e.g., user 604 or any other user) to interact with robot102. For example, user interface units 322 can include touch panels,buttons, keypads/keyboards, ports (e.g., USB, DVI, Display Port, E-Sata,Firewire, PS/2, Serial, VGA, SCSI, audioport, HDMI, PCMCIA ports, memorycard ports (e.g., SD and miniSD), and/or ports for computer-readablemedia), mice, rollerballs, consoles, vibrators, audio transducers,and/or any interface for a user to input and/or receive data and/orcommands, whether coupled wirelessly or through wires (including,without limitation, any of the wireless or wired connections describedin this disclosure, such as with reference to communication units 316).User interface units 322 can include a display, such as, withoutlimitation, LCDs, LED displays, LED LCD displays, IPSs, cathode raytubes, plasma displays, HD panels, 4K displays, retina displays, organicLED displays, touchscreens, surfaces, canvases, and/or any displays,televisions, monitors, panels, and/or devices known in the art forvisual presentation. In some implementations user interface units 322can be positioned on the body of robot 102. In some implementations,user interface units 322 can be positioned away from the body of robot102, but can be communicatively coupled to robot 102 (e.g., viacommunication units 316) directly or indirectly (e.g., through a networkor a cloud).

In some implementations, map evaluation units 324 can includecomparators, signal processors, image processors, and other software orhardware components. As will be described with reference to FIGS. 7A-7B,8A-8C, 9A-9C, 10, 11 map evaluation units 324 can analyze and evaluatemap 700 (or any other map) to detect mapping errors, determine thequality of map 700 (e.g., high, good, acceptable, poor, and/or any otherdesignation), and/or the usability of map 700 for autonomous navigation.In some cases, in analyzing the quality of map 700 or any other map, mapevaluation units 324 can determine that there has been a mapping errorand/or that the map is of poor quality. Consequently, robot 102 canprompt a user (e.g., user 604) using user interface units 322 or throughcommunication units 316 to re-demonstrate a route (e.g., route 116), orotherwise re-map environment 100.

In some implementations, navigation units 326 can include componentsand/or software configured to provide directional instructions for robot102 to navigate. Navigation units 326 can process maps and localizationinformation generated by mapping and localization units 312, sensor datafrom sensor units 314, and/or other operative units 308. For example,navigation units 326 can receive map 700 from mapping and localizationunits 312. Navigation units 326 can also receive localizationinformation from mapping and localization units 312, which can beindicative at least in part of the location of robot 102 within map 700,including route 716. Navigation units 326 can also receive sensor datafrom sensor units 314 which can be indicative at least in part ofobjects around robot 102. Using one or more of the map, location, andsensor data, navigation units 326 can instruct robot 102 where tonavigate (e.g., go forward, left, right, back, etc.).

In some implementations, power supply 306 can include one or morebatteries, including, without limitation, lithium, lithium ion,nickel-cadmium, nickel-metal hydride, nickel-hydrogen, carbon-zinc,silver-oxide, zinc-carbon, zinc-air, mercury oxide, alkaline, or anyother type of battery known in the art. Certain batteries can berechargeable, such as wirelessly (e.g., by a resonant circuit and/or aresonant tank circuit) and/or by plugging into an external power source.Power supply 306 can also be any supplier of energy, including wallsockets and electronic devices that convert solar, wind, water, nuclear,hydrogen, gasoline, natural gas, fossil fuels, mechanical energy, steam,and/or any power source into electricity.

In some implementations, operating system 310 can be configured tomanage memory 302, controller 304, power supply 306, modules inoperative units 308, and/or any software, hardware and/or features ofrobot 102. For example, and without limitation, operating system 310 caninclude device drivers to manage hardware resources for robot 102.

As previously mentioned, any of the aforementioned components of robot102 can be instantiated in software and/or hardware. For example, aunit/module can be a piece of hardware and/or a piece of code run on acomputer.

FIG. 4 illustrates a process flow diagram of an exemplary method 400where robot 102 learns a route and then travels that route. For example,in portions 402, 404, 406 in teaching phase 414, robot 102 can learnroute 116 demonstrated by user 604. Subsequently, in portions 408, 410,412 in autonomous phase 416, robot 102 can autonomously navigate alongroute 106 or route 126.

In some implementations, robot 102 can begin teaching phase 414 byreceiving an input from input 574 in user interface 500 illustrated inFIG. 5A. User interface 500 can appear on display 576, which can be amobile device, specialized device, or any other device with a screen andconfigured to accept a user input. In some cases, display 576 can bepart of user interface units 322 of robot 102. In some cases, display576 can be a separate display communicatively coupled to robot 102, suchas, without limitation, communicatively coupled through communicationunits 316 of robot 102. Input 574 can include buttons, radio buttons,pull-down menus, text input, and/or any way for a user to put ininformation and/or commands known in the art. User interface 500 canalso include input 572, which can be used to initiate autonomous phase416, which will be described later in this disclosure. Input 572 caninclude buttons, radio buttons, pull-down menus, text input, or any wayfor a user to input information and/or commands known in the art.

Returning to FIG. 4, in portion 402, robot 102 can detect initializationlocation 104 and initialize position and/or orientation of robot 102. Insome implementations, initialization location 104 is a position relativeto the floor and/or floor plan. For example, initialization location 104can be demarcated by a user (e.g., drawn and/or marked physically ordigitally) so that robot 102 can use the initialization position of theroute training for later route initialization (e.g., in recallinglearned routes). In some implementations, robot 102 can detect thatrobot 102 is in initialization location 104 based at least in part onwhere the user stopped robot 102. As such, it can assume where the userstopped, and subsequently begin training robot 102 (as will be describedwith reference to portion 404) is initialization location 104. In someimplementations, there can be a transmitter (e.g., a transmitter thattransmits communications using RFID, NFC, BLUETOOTH®, radiotransmission, radio frequency field, and/or any other communicationprotocol described in this disclosure) at, or substantially close to,initialization location 104. When robot 102 detects that it is on topof, or substantially close to the transmitter, robot 102 can detect thatrobot 102 is in initialization location 104. In some cases, thetransmitter can have an operable range such that robot 102 can detect acommunication from the transmitter only when it is in the startinglocation. By way of illustrative example, the transmission range of NFCcan be ten centimeters or less. Accordingly, when robot 102 receives atransmission via NFC, robot 102 can detect that it is positioned ininitialization location 104. In some implementations, robot 102 canreceive the transmission from the transmitter and calculate the distanceto the transmitter based at least in part on the attenuation of thesignal strength. In this way, robot 102 can detect how close it is tothe transmitter, and consequently, the position of robot 102 relative tothe transmitter and/or initialization location 104. In someimplementations, robot 102 can determine its location by triangulatingthe signal strength of a plurality of transmitters. In someimplementations, initialization location 104 can be demarcated by a sign(e.g., markings, symbols, lines, etc.) on the floor. When one or moresensors of robot 102 (e.g., of sensor units 314) detect the sign on thefloor, robot 102 can detect that robot 102 is positioned ininitialization location 104.

In some implementations, a camera is positioned on the ceiling, whereinthe camera can be communicatively coupled (e.g., through communicationunits 316) to robot 102. In some cases, the camera can be part of sensorunits 314. The camera can determine the position/pose of robot 102through image processing and/or machine learning and communicate theposition/pose to robot 102. In some cases, the camera will recognizewhen robot 102 is in initialization location 104 through imageprocessing and/or machine learning and communicate to robot 102 thatrobot 102 is in initialization location 104.

In some cases, while user 604 may position robot 102 by a demarcatedposition on the floor, robot 102 will detect and register initiationlocation 104 by the relationship of initiation location 104 tosurrounding objects. By way of illustrative example, Robot 102 candetect initiation location 104 by detecting with one or more of sensors560A-560D one or more of surrounding objects 512, 546, 548, 550 as willbe discussed with reference to FIGS. 5B-5D. In some implementations,more particularly, robot 102 can detect initialization location 104 bydetecting with one or more of sensors 560A-560D one or more positions onone or more surrounding objects 512, 546, 548, 550, such as one or moreof points 590, 592, 594, 596, 598, as will be discussed with referenceto FIGS. 5B-5D. While in initialization location 104, robot 102 caninitialize its orientation and position.

In some implementations, from initialization position 104, robot 102 candetect the presence of robot 102 in initialization position 104 and/ordetermine robot's 102 relative positioning and/or orientation to one ormore surrounding objects. In such implementations, in order to detectrobot's 102 presence in initialization position 104 and initialize itsorientation and/or position, robot 102 can use, at least in part, itssensors (e.g., sensor unit 314) to sense its surrounding. These sensorscan sense characteristics of the surrounding environment, such asobjects (e.g., items, walls, etc.), floors, ceilings, persons andthings, signs, surfaces, etc. The relative position and/or orientationof sensed objects in its surrounding can allow the robot to get itsbearings relative to its initialization location.

By way of illustrative example, FIGS. 5B-5D illustrate overhead views ofexample robot 102 in initialization location 104, where robot 102 candetect its presence in initialization location 104 and/or sense itsorientation and/or position. As illustrated in FIG. 5B, robot 102 can bepositioned in initialization location 104. Robot 102 can include a bodywith a plurality of sides, such as front side 502, right side 508, leftside 506, and back side 504. Robot 102 can also have a top side 564 anda bottom side (not pictured). A person having ordinary skill in the artshould appreciate that robot 102 can have other sides as well,corresponding to the surfaces of robot 102, which can vary by shape(e.g., rectangular, pyramidal, humanoid, or any other designed shape).By way of illustration, front side 502 can be positioned on theforward-facing side of robot 102, where the forward-facing side isforward in the direction of forward movement of robot 102. Back side 504can be positioned on the backward-facing side of robot 102, where thebackward-facing side is the side facing in substantially the oppositedirection of the forward facing side. Right side 508 can be theright-hand side relative to front side 502, and left side 506 can be theleft-hand side relative to front side 502.

Robot 102 can have one or more sensors 560A-560D (which can be part ofsensors unit 314 and/or substantially similar to any sensor described inthis disclosure) positioned along one or more front side 502, right side508, left side 506, and/or back side 504. Sensors 560A-560D can compriseexteroceptive sensors. In some cases, each of sensors 560A-560D caninclude multiple sensors that can detect different characteristics ofthe surrounding environment 100. Robot 102 can also have one or moresensors 568A-568B, which can include proprioceptive sensors. A personhaving ordinary skill in the art should appreciate that more sensors canbe used and in different positions than as illustrated in FIGS. 5B-5Dwhere different types of sensors and/or different sensor coverage (e.g.,sensor positioning to detect a narrower or wider range of environment100) is desired.

Sensors 560A-560D can be positioned orthogonal to a side (e.g., frontside 502, right side 508, left side 506, and back side 504, top side564, bottom side (not pictured), and/or any other side) or be placed atan angle. The angle can be determined by the desired objects to besensed and the range, focal plane, region-of-interest, and/or othercharacteristics of each of sensors 560A-560D. As a non-limiting example,a sonar sensor can emit acoustic signals that fan out in a spread (e.g.,a multi-lobed pattern, fan, or other characteristic shape of the sensor)from the sonar sensor. For example, FIG. 5E illustrates an overhead viewof robot 102, where robot 102 emits and/or receives energy pattern 580B.Energy pattern 580B is illustrative in nature and not a representationof the actual waveform or transmission of a signal. Instead, energypattern 580B is indicative of energy emitted and/or later reflected andreceived in some cases by sensor 560B from front side 104, allowingdetection of objects over the spread of energy pattern 580B. Energypattern 580B can be the characteristic energy used by the type of sensor560B. For example, where sensor 560B is a lidar, energy pattern 580B canbe representative at least in part of the pattern of a plurality oflight waves emitted (and later reflected and received in some cases)from sensor 560B. Where sensor 560B is a sonar sensor, energy pattern580B can be the pattern of sound waves emitted (and later reflected andreceived in some cases) by sensor 560B. Where sensor 560B is a camera,ambient light or light from a flash of sensor 560B can illuminateobjects and sensor 560B can detect the reflected light. As such, in somecases, energy pattern 580B may not represent emitted energy, but ratherreceived energy where no energy is emitted by sensor 560B. Where sensor560B is an infrared sensor or a 3D camera detecting infrared, energypattern 580B can be the pattern of infrared light emitted (and laterreflected and received) by sensor 560B. In the case of an infraredsensor, sensor 560B can also use filters to see reflected ambientinfrared light. As another example, sensor 560B can be a 3D sensorconfigured to emit and receive energy to sense the environment in threedimensions. A person having ordinary skill in the art should appreciatethat other sensors can be used, and energy pattern 580B can represent atleast in part the characteristic energy emitted, reflected, and/orreceived by sensor 560B.

The example sonar sensor can be positioned as one or more of sensors560A-560D so that the spread covers a desired region or range from robot102. Measurements (e.g., distance and/or angular measurements) can betaken relative to sensors 560A-560D or relative to another position onthe body of robot 102, such as the center of mass of robot 102 or anyother designated position.

Returning to FIG. 5B, using the one or more sensors 560A-560D, robot 102can detect object 512 in its surrounding environment and approximate theposition and/or orientation of robot 102 relative to object 512. Forexample, object 512 can be an obstacle (e.g., items, walls, etc.). Fromobject 512, robot 102 can measure a distance 516 to a point 590 onobject 512, which can be an absolute distance measurement using standardunits, such as inches, feet, meters, or any other unit of measurement(e.g., measurements in the metric, US, or other system of measurement).In some implementations, distance 516 can be measured in relative (ornon-absolute) units, such as ticks, pixels, percentage of range of asensor, and the like. In some implementations, distance 516 can beexpressed in x- and y-coordinates relative to a reference point, such asa point in initialization location 104, object 512, any one of sensor560A-560D, the center of mass of robot 102, or any other determinedlocation. In such cases, the x-coordinate can be the distance to thereference point relative to a first axis, and the y-coordinate can bethe distance to the reference in a second axis, the second axisorthogonal to the first forming a rectangular coordinate system. In somecases, distance 516 can be measured in three dimensions, including theaforementioned x- and y-coordinates, and a z-coordinate, where thez-coordinate can be the distance to the reference point in a third axis.

In some implementations, the one or more sensors 560A-560D can measureor approximate distance 516 to point 590 of object 512. For example,sensor 560A can be a sonar sensor that can measure distance by measuringthe time difference of an original emitted sound wave and the reflectionof that sound wave back to sensor 560A, where the temporal differencebetween the emitted and reflected sound waves can be scaled to distanceusing the speed of sound.

In some implementations, the one or more sensors 560A-560D can create amap 700, as will later be described, where map 700 includes object 512as well as, in some implementations, a learned route. Distance 516 canbe approximated based at least in part on approximate measurements takenon map 700, such as by using relative units on map 700 or scaling therelative units of the map 700 to absolute distance measurements.

Robot 102 can also approximate its orientation in initializationlocation 104. In some implementations, robot 102 can approximate therelative angle 514 to a reference point such as relative to a point ininitialization location 104, object 512, sensors 560A-560D, the centerof mass of robot 102, or any other determined location. Angle 514 can bemeasured in degrees, radians, or any unit. In some implementations,angle 514 can be measured relative to a 2D plane, such as a horizontalplane (e.g., the aforementioned rectangular coordinate system ofdistance 516 or other measurements). In some implementations, additionalangles can be measured, such as one or more of roll, yaw, and, pitch ofobject 512 relative to robot 102.

By way of illustrative example, robot 102 can measure angle 514 relativeto object 512. Similar to how it can approximate distance 516 to object512, one or more sensors 560A-560D can approximate angle 514 to object512. For example, sensor 560A can be a sonar sensor that can determinethe orientation (e.g., angle 514) of an object 512 relative to sensor560A based on the angle of received reflected energy. As previouslymentioned, in some implementations, one or more sensors 560A-560D cancreate map 700, which can include object 512. Angle 514 can beapproximated based at least in part on approximate measurements taken onthe map 700, such as by using relative units on map 700 or scaling thoserelative units to measured distances.

In some implementations, robot 102 can record its position and/ororientation (e.g., distance 516 and/or angle 514) relative to object512, and/or point 590 therein in memory 302 and associate its positionwith respect to object 512 and/or point 590 with initialization position104. In this way, robot 102 can later both detect initializationposition 104 and initialize position with respect to object 512 and/orpoint 590 when subsequently returning to initialization position 104.The detection of initialization position 104 and the initialization ofposition can be performed by mapping and localization units 312.

FIG. 5C illustrates an overhead view of robot 102 positioned at an anglein initialization location 104. This time, sensor 560A of robot 102 canmeasure distance 524 at angle 518 to point 591 of object 512 usingsystems and methods substantially similar to how sensor 560A measureddistance 516 and angle 514 described with reference to FIG. 5B.Additionally, FIG. 5C illustrates that a plurality of sensors 560A-560Dcan independently measure distances and angles to object 512. Forexample, sensor 560B can measure distance 522 and angle 520 to point 592of object 512 using systems and methods substantially similar to howsensor 560A of robot 102 measured distance 516 and angle 514 describedwith reference to FIG. 5B. In this way, robot 102 can detectinitialization position 104 and/or initialize the position and/ororientation of robot 102 with respect to object 512. In someimplementations, robot 102 can record robot's 102 position and/ororientation (e.g., one or more of distances 516, 522 and angle 514, 520)relative to object 512, and/or points 591, 592 therein, in memory 302and associate robot's 102 position and/or orientation with respect toobject 512 and/or points 591, 592 with initialization position 104.Accordingly, robot 102 can later both detect initialization position 104and initialize robot's 102 position and/or orientation with respect toobject 512 and/or points 591, 592 when subsequently returning toinitialization position 104.

FIG. 5D illustrates an overhead view of example robot 102 where aplurality of example objects 512, 546, 548, 550 are used to detectinitialization location 104 and/or initialize the orientation and/orposition of robot 102. Using systems and methods substantially similarto how sensor 560A of robot 102 measured distance 516 and angle 514described with reference to FIG. 5B, robot 102 can also measure distance558 and angle 540 relative to point 594 of object 546, distance 554 andangle 542 relative to point 596 of object 548, and distance 556 andangle 544 relative to point 598 of object 550. In this way, robot 102can detect initialization position 104 and initialize robot 102'sposition and/or orientation with respect to one or more of objects 512,546, 548, 550, and/or points 590, 594, 596, 598 therein. In someimplementations, robot 102 can record its position and/or orientation(e.g., distances 516, 558, 554, 556 and/or angles 514, 540, 542, 544)relative to one or more points 590, 594, 596, 598 of objects 512, 546,548, 550 in memory 302 and associate robot's 102 position and/ororientation with respect to one or more of objects 512, 546, 548, 550,and/or points 590, 594, 596, 598 therein, with initialization position104. Accordingly, robot 102 can later both detect initializationposition 104 and initialize robot's 102 position and/or orientation whensubsequently returning to initialization position 104.

Using a plurality of objects 512, 546, 548, 550 to detect initializationlocation 104 can be advantageous in allowing robot 102 to more preciselylocate initialization location 104. Using a plurality of objects 512,546, 548 can also provide additional uniqueness to initializationlocation 104, which can aid robot 102 in detecting initializationlocation 104 and/or reduce the chances that robot 102 mistakes adifferent location for initialization location 104.

As robot 102 measures distances and angles to objects, as described withreference to FIGS. 5B-5D, robot 102 can initialize exteroceptive sensors568A-568B. Initialization of sensors 568A-568B can comprise zeroingsensors 568A-568B, setting sensors 568A-568B to an initial value, orstoring in memory 302 the current value of sensors 568A-568B. In someimplementations, exteroceptive sensors 568A-568B can initialize relativeto a reference point. By way of illustrative example, robot 102 caninitialize exteroceptive sensors 568A-568B relative to point 590 suchthat point 590 is treated as the origin (e.g., (0, 0) in a 2D map or (0,0, 0) in a 3D map). Accordingly, robot 102 can measure distance 516 andangle 514 to point 590 and determine the initial position and/ororientation of robot 102 relative to the origin. This determination canbe performed by mapping and localization units 312. In someimplementations, using distance 516 and/or angle 514, robot 102 can thendetermine its coordinates (e.g., (x, y) in a 2D map or (x, y, z) in a 3Dmap) using trigonometry on the vector (e.g., distance 516 and angle514). For example, the x-coordinate can be the cosine of angle 514multiplied by distance 516 in some cases. The y-coordinate can be thesine of angle 514 multiplied by distance 516 in some cases. Anotherpoint, such as, without limitation, one of points 591, 592, 594, 596,598, can similarly be used as the origin, and trigonometry used with thecorresponding vector (e.g., distances 516, 518, 522, 558, 554, 556and/or angles 514, 518, 520, 540, 542, 544) as illustrated and/ordescribed with respect to FIGS. 5B-5D. In some cases, there can bemultiple origins so that a plurality of points (e.g., two or more ofpoints 590, 591, 592, 594, 596, 598) can initialize robot 102. Usingmultiple origins may be desirable to create multiple maps, providemultiple origins from which to choose for computational simplicity,provide a check of sensors in case one or more have an incorrectreading, and other benefits.

Advantageously, sensors 568A-568B can track the movements (e.g.,distance traveled and amount of turning) of robot 102 relative to thisinitialization of sensors 568A-568B using odometry. For example, sensors568A-568B can include one or more odometers (e.g., wheel encoders (e.g.,rotary encoders), visual odometry, compass, Global Positioning System(“GPS”), inertial measurement units (“IMUs”), lidar, 3D cameras (e.g.,red, green, blue, depth (“RGB-D”) camera), etc.) that can detect theangular turning of robot 102. IMUs can include accelerometers,magnetometers, angular rate sensors, and the like. For example, wheresensors 568A includes a lidar, the displacement (and correspondingposition) can be determined based on position differences of differentimages at different times. Where an RGB-D camera is used, scan matchingcan be used to determine position. Sensors 568A-568B can also includeone or more odometers to measure the distance traveled by robot 102.

Returning to method 400 of FIG. 4, in portion 404, robot 102 can travelalong route 116 (illustrated in FIG. 1B) under user control whilerecording route 116 and a map 700 of environment 100. FIG. 6Aillustrates a side view of example user 604 controlling example robot102. User 604 can be a janitor, custodian, or any other person who canuse robot 102. As illustrated, robot 102 can be a floor cleanerconfigured to clean the floor of a store, warehouse, office building,home, storage facility, etc. Accordingly, robot 102 can have brush 608configured to clean the floor beneath and/or around robot 102.

Robot 102 can be trained to associate (e.g., and later perform) anaction and/or actuation with a position and/or trajectory on map 700.For example, brush 608 can be actuated by actuator units 318, whereinbrush 608 can turn on/off and/or be raised/lowered by actuator units318. Robot 102 can learn actuations of brush 608 as the user controlsbrush 608 while recording route 716 and map 700. In someimplementations, map 700 can comprise actuator instructions foractuation of brush 608 at one or more positions and/or trajectories onmap 700 and/or route 716 therein. In some implementations, robot 102 canalso have one or more squeegee 616. Squeegee 616 can be a rubber piece,such as a rubber-edged blade, to clean or scrape the floor. Actuatorunits 318 can also be used to raise/lower squeegee 616. Accordingly,robot 102 can learn actuations of squeegee 616 as the user controls itwhile recording route 116 and map 700. In some implementations, map 700can comprise actuator instructions for actuation of squeegee 616 at oneor more locations and/or trajectories on map 700. The actuation of otherinstruments of a scrubber, or any other robot form, can also besimilarly learned, such as turning on/off water, spraying water, turningon/off vacuums, moving vacuum hose positions, gesticulating an arm,raising/lowering a lift, turning a camera and/or any sensor of sensorunits 314, and/or any movement desired for robot 102 to perform anaction.

In some implementations, where actions and/or actuator instructions areassociated with positions on map 700, and/or route 716 therein, whileautonomously navigating, robot 102 can perform those actions and/oractuator instructions each time it passes by those positions. In someimplementations, where actions and/or actuator instructions areassociated with positions and trajectories on map 700, and/or route 716therein, while autonomously navigating, robot 102 can perform thoseactions and/or actuator instructions when it is passes by a position inthe same direction and/or at the same relative time in a route.Accordingly, in these implementations, robot 102 would not perform thoseactions and/or actuator instructions each time it passes a position(e.g., where it loops around and passes the same physical locationmultiple times), but only perform such actions and/or such actuatorinstructions when it passes by the position (e.g., location) either in aparticular direction or at particular instance(s) in the route.

A person having ordinary skill in the art should appreciate that robot102 can have a number of different forms, even if robot 102 is a floorscrubber. FIG. 6B illustrates side views of example body forms for afloor scrubber. These are non-limiting examples meant to furtherillustrate the variety of body forms, but not to restrict robot 102 toany particular body form or even to a floor scrubber. Example body form652 has an upright shape with a small frame where a user can push behindbody form 652 to clean a floor. In some cases, body form 652 can havemotorized propulsion that can assist a user in cleaning, but can alsoallow for autonomous movement of body form 652. Body form 654 has alarger structural shape than body form 652. Body form 654 can bemotorized enabling it to move with little to no user exertion upon bodyform 654 besides steering. The user may steer body form 654 as it moves.Body form 656 can include a seat, pedals, and a steering wheel, where auser can drive body form 656 like a vehicle as body form 656 cleans.Body form 658 can have a shape that is larger than body form 656 and canhave a plurality of brushes. Body form 660 can have a partial or fullyencased area where a user sits as he/she drives body form 660. Body form662 can have a platform where a user stands while he/she drives bodyform 662.

Further still, as described in this disclosure, robot 102 may not be afloor scrubber at all. For additional illustration, and withoutlimitation, FIG. 6C illustrates some additional examples of body formsof robot 102. For example, body form 664 illustrates an example whererobot 102 is a stand-up shop vacuum. Body form 666 illustrates anexample where robot 102 is a humanoid robot having an appearancesubstantially similar to a human body. Body form 668 illustrates anexample where robot 102 is a drone having propellers. Body form 670illustrates an example where robot 102 has a vehicle shape having wheelsand a passenger cabin. Body form 672 illustrates an example where robot102 is a rover.

Returning to FIG. 6A, robot 102 can be configured in any number of waysfor control by user 604. As illustrated, user 604 can walk behind robot102 and steer robot 102 using steering wheel 610. In otherimplementations, robot 102 can be a ride-on floor cleaner (not pictured)where user 604 can ride on a seat or standing platform of robot 102 andcontrol robot 102. In some implementations, user 604 can control robot102 remotely with a remote control, such as a radio remote, mobiledevice, joystick, or any other apparatus for navigation known in theart. This control can include turning left, turning right, movingforward (e.g., using a gas pedal or telling robot 102 to go in a forwarddirection), moving backwards (e.g., using a reverse pedal or tellingrobot 102 to go in a backward direction), turn on/off, raise/lowerbrush, turn on/off water, etc. In some implementations, user 604 maycontrol actuator units 318, which drives movement of robot 102,raises/lowers brushes, turns on/off water, etc. In otherimplementations, robot 102 may not be a floor cleaner, but may be any ofthe other robots described in this disclosure.

FIG. 6D illustrates a top down view as user 604 controls example robot102, and robot 102 senses its surroundings. Robot 102 can use one ormore of sensors 560A-560D and other sensors to detect objects and mapthe surroundings of robot 102 as robot navigates route 116. For example,robot 102 can emit energy waves 580A-580C. Energy 580B was describedearlier in this disclosure with reference to FIG. 5E as well aselsewhere throughout the disclosure. Energy waves 580A, 580C can besubstantially similar to energy wave 580B, where energy wave 580Acorresponds to sensor 560A and energy wave 580C corresponds to sensor560C.

FIG. 7A illustrates example map 700 and route 716 generated by examplerobot 102 as it travels in environment 100. In some implementations, thegeneration of map 700 can be performed by mapping and localization units312. Map 700 can comprise pixels, wherein each pixel corresponds to amapped area of environment 100. The number of pixels in map 700 can bedetermined based on the resolution of map 700. For example, map 700 canbe viewed on screens of varying display size (e.g., 3.5 inch, 10 inch,20 inch, and/or any other diagonal screen measurement of a screen knownin the art) and display resolution (e.g., 800×600, 1024×768, 1360×768,1680×1050, 1920×1200, 2560×1440, 3840×2160, or any known displayresolution known in the art). Screens displaying map 700 can also berectangular or non-rectangular, including circular, triangular,hexagonal, or any other shape. These screens can be part of userinterface units 322. Map 700 can be substantially similar in layout asenvironment 100, where each pixel in map 700 can approximate a locationin environment 100.

In some implementations, pixels of map 700 can have one or more states,where the pixel state is indicative at least in part of a characteristicof the position/location in environment 100 represented by that pixel.For example, pixels of map 700 can be binary, where a first pixel state(e.g., pixel value) is indicative at least in part of a clear (e.g.,navigable) location, and a second pixel state is indicative at least inpart of a blocked (e.g., not navigable) location. By way ofillustration, a pixel value of zero (0) can be indicative at least inpart of a clear location and a pixel value of one (1) can be indicativeat least in part of a blocked location.

In some implementations, instead of or in addition to the aforementionedbinary states, pixels of map 700 can have other pixels states such asone or more of: a pixel state indicative at least in part of an unknownlocation (e.g., a position/location with no information); a pixel stateindicative at least in part of a position/location that should not betraveled to; a pixel state indicative at least in part of being part ofa navigable route (e.g., route 716); a pixel state indicative at leastin part of an area in which robot 102 has traveled; a pixel stateindicative at least in part of an area to which robot 102 has nottraveled; a pixel state indicative at least in part of an object; apixel state indicative at least in part of standing water; and/or anyother categorization of a position/location on map 700.

Pixels of map 700 can also store more than a single value, or pixelstate. For example, each pixel of map 700 can store a plurality ofvalues such as values stored in a vector or matrix. These values caninclude values indicative at least in part of the position/pose (e.g.,including location and/or orientation) of robot 102 when the position ismeasured at a point (e.g., pixel) along route 716. These values can alsoinclude whether robot 102 should clean or not clean a position/location,or other actions that should be taken by robot 102.

Robot 102 can travel along route 116 (pictured in FIG. 1B), which can bereflected in map 700 as route 716. Robot 102 can be represented by robotindicator 702 on map 700, where the position of robot indicator 702 inmap 700 can reflect at least in part the relative location of robot 102in environment 100. At each location robot 102 travels along route 116,robot 102 can determine its position and/or orientation relative toinitialization location 104, or another reference point (e.g., objects512, 546, 548, 550, points 590, 591, 592, 594, 596, 598, and/or anyother reference point robot 102 used during initialization atinitialization location 104). These mapping and localization functionscan be performed by mapping and localization units 312. Initializationlocation 104 can be represented on map 700 as mapped position 724. Endlocation 114 can be represented on map 700 as mapped position 726. Forexample, robot 102 can measure or approximate its distance frominitialization location 104 (or another reference point) using odometry,where it uses proprioceptive sensors 568A-568B (e.g., wheel encoders(e.g., rotary encoders), visual odometry, IMUs (includingaccelerometers, magnetometers, angular rate sensors, and the like),etc.) to track its movements since its initialization at initializationlocation 104. By way of illustrative example, one or more ofproprioceptive sensors 568A-568B can be wheel encoders that measure orestimate distance based on the revolution of the wheels of robot 102. Asanother illustrative example, visual odometers can be used to measure orestimate the distance traveled and/or orientation of robot 102 throughsequential images taken by a camera. The visual odometers can constructan optical flow field (e.g., using Lucas-Kanade methods or othermethods) and estimate camera motion, such as by using Kalman filters orprojection. As another non-limiting example, IMUs can be used to measureor estimate the position and/or orientation of robot 102.

Robot 102 can record route 716 in map 700, as robot indicator 702progresses along map 700 in a substantially similar way as robot 102navigates through environment 100. Advantageously, in someimplementations map 700 and route 716 are created together, whereinrobot 102 maps the environment 100 and records route 716 atsubstantially similar times. Accordingly, in some implementations, map700 and route 716 can be paired together wherein each recorded route isstored only with a particular map.

At each location that is part of route 116, robot 102 can change acorresponding pixel on route 716 in map 700 to a pixel state indicatingthe pixel is part of a navigable route. At the same time, robot 102 canalso measure robot's 102 position and/or orientation relative to objectsusing one or more sensors 560A-560D using systems and methodsubstantially similar to those described with reference to sensors560A-560D with respect to FIGS. 5A-5E. In this way, robot 102 can detectand/or measure robot's 102 position and/or orientation relative toobjects, such as shelves or walls, in order to populate map 700, whererobot 102 can change pixel states based at least in part on thesemeasurements and detections by robot 102.

In the case where robot 102 detects objects, robot 102 can use sensors560A-560D to detect and/or measure the position and/or orientation ofthose objects in a plurality of directions relative to robot 102. At thesame time, robot 102 can use sensors 568A-568B to estimate robot's 102position (e.g., distance traveled) and/or orientation. As robot 102moves in the environment, different objects can come within the range ofits sensors. For example, sensor 560B, which can be positioned on frontside 502 of robot 102, can have range 704. For example, robot 102 candetect objects at front side 502 up to range 704. Similarly, sensors560A, 560C, 560D can each have ranges and detect objects within thoseranges. As robot 102 detects objects and determines their relativepositions and/or orientations from robot 102, robot 102 can indicate onmap 700 the location of pixels that correspond to detected objects. Suchpixels can be turned to a state that is indicative at least in part thatthose pixels correspond to objects (e.g., a pixel state indicative of ablocked location or an object).

Because robot 102 populates map 700 on a per pixel basis, map 700 canhave certain artifacts. For example, walls that appear smooth can appearjagged based at least in part on the signals received by the sensors.For example, where sensors 560A-560D include sonars, lidars, or othersensors that depend on the reflectance of sound, light, or otherelements from surfaces, there can be variability within the surface.There can also be motion artifacts and others artifacts and/ordistortions.

In some cases, sensors 560A-560D may not sense certain areas. Forexample, an object can impede the availability of robot 102 to sense anarea, or the area may appear in a blind spot (e.g., place not covered bythe measuring range of the sensors). As another non-limiting example,box 706 highlights on the map 700 measurements taken by robot 102 as itmade turn 708 on map 700. As robot 102 turned, sensors 560A-560Dmeasured the area marked white (e.g., as navigable locations) by box706, however, certain objects impeded the range of the sensors, creatingthe elongated, fractured appearance illustrated in box 706.

As robot 102 travels along route 116 from initialization location 104 toend location 114, robot 102 can generate map 700 comprising arepresentation of route 116 and the surrounding environment 100 of route116 within the range of the sensors of robot 102. FIG. 7B illustratesexample map 700 once completed. Advantageously, robot 102 can recordmapped route 716 and map the surrounding environment of mapped route 716in map 700 in one demonstration. Accordingly, map 700 can allow robot102 to navigate route 116 (or a route substantially similar to route116) again autonomously in as few as one demonstration.

Other, contemporary systems and methods can demand users upload maps,draw routes on maps, or utilize multiple demonstrations that map theenvironment. These systems and methods can be burdensome for users. Forexample, these systems and methods can be cumbersome and provide pooruser experiences if the user can even perform all the steps in asatisfactory manner for those systems and methods to work. Having robot102 record mapped route 716 and map the surrounding environment in map700 in one demonstration can be advantageous in that it allows a user totrain and/or program robot 102 with minimal user interaction. Thiscapability is also advantageous in that it is readily adaptable to manyenvironments based on relatively few user demonstrations.

Returning to FIG. 4, in portion 406, robot 102 can determine mappingerrors in map 700. This determination can be performed by map evaluationunits 324. Advantageously, where robot 102 desirably travels route 106autonomously (e.g., in autonomous phase 416) after a singledemonstration generating map 700, determining if there have been mappingerrors in map 700 (including route 716) can allow robot 102 to avoid,e.g., collisions, errors, and/or any negative consequences of inaccurateor incorrect mapping. If robot 102 finds that there have been sufficientmapping errors in map 700 and/or that map 700 is of poor quality, robot102 can send (e.g., via user interface units 322) an alert, alarm,prompt and/or other indication to a user (e.g., user 604 or anotheruser) indicating that the map is poor quality. In some cases, robot 102can send an alert, alarm, prompt or other indication to the user tore-demonstrate a route (e.g., by performing portions 402, 404 again).Advantageously, determining errors and/or evaluating the quality of map700 prior to autonomous navigation can save time and prevent damage byensuring that robot 102 does not crash into an obstacle or become stuckdue to robot 102's mapping.

There are a number of ways in which robot 102 can detect mapping errorsand/or evaluate the quality of map 700 (including route 716), each wayimplemented alone or in combination. Notably, not every mapping error orthe presence of mapping errors, means that map 700 is of poor qualityand/or cannot be used to navigate autonomously. Indeed, map 700 can havemany errors and still be fit for use for autonomous navigation. Rather,portion 406 can be used to determine if map 700 is sufficiently flawedsuch that robot 102 cannot or should not navigate autonomously based atleast in part on map 700. The foregoing gives some illustrative examplesof ways robot 102 can make such an evaluation. In some implementations,in detecting mapping errors and/or evaluating the quality of map 700,robot 102 can take into account at least in part characteristics oferrors in map 700. Advantageously, in some cases, robot 102 can detectmapping errors and/or evaluate the quality of map 700 with little or noinput and/or effort by user 604. This can create a seamless experiencethat further emphasizes and reinforces the autonomy of robot 102 to user604.

As an illustrative example, in some implementations, robot 102 cantransmit map 700 to a server, control center, mobile device, and/or anyinterface for a user/viewer to verify map 700 and/or route 716. Theviewer can view map 700 on a display, such as a screen, computermonitor, television, and the like, and/or any display in user interfaceunits 322. The viewer can also communicate back to robot 102, where suchcommunication can be indicative at least in part of whether map 700and/or route 716 are acceptable for autonomous navigation. In somecases, robot 102 can transmit map 700 using communication units 316,which can send map 700 and receive communications indicative at least inpart of whether map 700 and/or route 716 are acceptable to use forautonomous navigation. In some cases, an interface for the user (e.g.,user interface units 322) can be on robot 102, wherein the user can viewmap 700 and/or route 716 and provide an input indicative at least inpart of whether map 700 and/or route 716 are acceptable for autonomousnavigation.

As another illustrative example, in some implementation, robot 102 canlook for particular predetermined patterns (e.g., predetermined errorpatterns) in map 700 including route 716, wherein the presence orabsence of particular predetermined patterns can be indicative at leastin part of mapping errors and/or the quality of map 700. By way ofillustrative example, where robot 102 is a floor cleaner operating in astore, robot 102 can be configured to expect, and/or look for, one ormore series of approximately parallel objects 108, 110, 112 (illustratedin FIGS. 1A-1C), which can represent shelves that display goods. Asrepresented in map 700, objects 108, 110, 112 may appear parallel asmapped objects 808, 810, 812, as illustrated in FIG. 8A. Accordingly,where robot 102 instead maps mapped objects 858, 860, 862, asillustrated in FIG. 8B, robot 102 may find that there has been an errorin map 700.

Robot 102 can detect such particular patterns on a pixel-by-pixel orregion-by-region basis. In some cases, robot 102 can use imageprocessing, such as segmentation, edge detection, shape recognition,and/or other techniques to identify one or more objects 858, 860, 862 inmap 700. Once objects 858, 860, 862 are identified, robot 102 can usevarious methods to determine whether objects 858, 860, 862 areapproximately parallel to others of objects 858, 860, 862. Robot 102 canthen measure the orientations and/or positions of objects 858, 860, 862,such as the distances and/or relative angles between objects 858, 860,852. Based at least in part on the measured orientations and/orpositions, robot 102 can determine if objects 858, 860, 862 areapproximately parallel or not.

By way of illustrative example, robot 102 can use seeding or regiongrowing to define (e.g., find the pixels corresponding to) objects 858,860, 862. With these pixels, robot 102 can then identify a plurality ofpoints within objects 858, 860, 862. By way of illustrative example,robot 102 can identify points 868, 866, 864 in object 862 and points890, 892, 894 in object 860. Robot 102 can measure the distance betweeneach of points 864, 866, 868 of object 862 and points 890, 892, 894 ofobject 860, and compare those distances to determine, at least in part,if objects 860, 862 are approximately parallel. For example, if thedifference of the distances between point 866 and point 892, and point868 and point 894 are above a predetermined threshold (e.g., a thresholdindicative of possible deviations in measurements or in the actuallocation of approximately parallel shelves, such as, without limitationa 5%, 10%, 15% difference), robot 102 can find that objects 860, 862 arenot approximately parallel. In some cases, the predetermined thresholdcan be stored in memory 302. If the difference in the distances is belowthe predetermined threshold, or equal to it, robot 102 can find thatthey are approximately parallel. A person having ordinary skill in theart should appreciate that robot 102 can use others of points 864, 866,868, 890, 892, 894, and/or other points in objects 860, 862 to makesimilar computations of distances and the difference between distances.Robot 102 can make similar comparisons between each or any of objects858, 860, 862, and/or any other objects that there may be. Where robot102 finds one or more substantially not parallel objects, where theexpectation was parallel objects such as objects 108, 110, 112, 118,robot 102 can detect mapping errors in map 700 and/or find that map 700is not of good quality. In some cases, robot 102 can then prompt (e.g.,via user interface units 322) the user 604 to demonstrate the routeagain.

In another example implementation, FIG. 8C illustrates an example mask870 that can be used to search map 700 for parallel objects, such asobjects 808, 810, 812. Mask 870 can be a structural template that can bevisualized as a matrix, wherein each cell of the matrix representspixels or groups of pixels of map 700, and their corresponding pixelstates. As used in certain applications in the art, mask 870 can also bereferred to as a filter. Mask 870 can be stored in memory 302 and/orpart of software configured to process map 700. In some implementations,mask 870 can be sized (e.g., as an m×n matrix with m pixels in the xdirection and n pixels in the y direction) based at least in part on map700 and the size of objects 808, 810, 812. For example, the size of mask870 can be predetermined based at least in part on a percentage of thetotal pixel dimensions (e.g., 5%, 10%, 15%, 20%, 25%, or more) of map700, or based at least in part on known approximate measurements ofobjects 808, 810, 812. In some cases, mask 870 can change in sizethrough iterations of search methods, where mask 870 begins searchingmap 700 as a first size, and then searches map 700 again as a secondsize, and searches map 700 again as a third size, and so on and so forthfor a predetermined number of times. For example, mask 870 can begin asa larger mask and in subsequent iterations become a smaller mask. Note,the size of mask 870 illustrated in FIG. 8C is for illustration purposesand may not be to scale.

Mask 870 can search map 700 by sweeping across and around map 700 andcomparing the contents of mask 870 with that of map 700. For example,mask 870 can be a matrix, each cell of the matrix having valuescorresponding at least in part to the pixel states of map 700 (e.g.,clear (e.g., navigable) location, blocked (e.g., not navigablelocation), unknown location, should not be traveled to, part ofnavigable route, traveled to, not traveled, object, water, and/or anyother categorization of map 700 described in this disclosure). Cell 872of the matrix, or any other cell (e.g., the top right corner cell,bottom left corner cell, bottom right corner cell, middle cell, or anyother cell in mask 870) can align sequentially with one or more or allof the pixels of map 700. As that cell aligns with each pixel of map700, the other cells of mask 870 can also align with the surroundingpixels in map 700. Each pixel aligned from map 700 can be compared tothe corresponding pixel of mask 870 to detect the similarities betweenmask 870 and the region of map 700 to which it is aligned.

As illustrated, mask 870 defines structures 876, 878, which can beindicative at least in part of parallel objects (e.g., two of objects808, 810, 812). The cells of structures 876, 878 (e.g., cell 876) canhave values indicative of certain characteristics of the searched forobjects. For example, each of the cells of structures 876, 878 can havea value indicative at least in part of an object of map 700 (e.g.,indicative at least in part of the pixel state for an object in map700). Between structures 876, 878 can be structure 880, whose pixels canhave values indicative of a clear location. In this way, in someimplementations, structures 876, 878 can represent shelves and structure880 can represent an aisle between them. Each cell of mask 870 canaccordingly have values indicative of the expected pixels of map 700.The designations of cells in mask 870 can reflect the pattern of pixelsof which map 700 is searched. In some implementations, in iterativesearches, mask 870 can rotate and/or change orientations.Advantageously, this can allow mask 870 to search map 700 for items thatmay be tilted at an angle, and/or map 700 itself may be tilted at anangle.

When mask 870 identifies groups of pixels in map 700 substantiallymatching (e.g., having a predetermined matching threshold of, forexample, 70%, 80%, 90% or more), the cell values of mask 870, in thestructure of mask 870, robot 102 can generate an indication (e.g.,message, value, or command) that robot 102 has found matches betweenmask 870 and map 700 and/or the location of such matches. In some cases,where too few matches are found (e.g., based on a predetermined numberof expected items to be found), robot 102 can detect mapping errors inmap 700 and/or determine that map 700 is not good quality. In somecases, where too many matches are found (e.g., when mask 870 isconfigured to identify undesirable structures), robot 102 can alsodetect mapping errors in map 700 and/or determine that map 700 is notgood quality. In either case, robot 102 can then prompt the user 604 todemonstrate the route again (e.g., via user interface units 322).

As another example, in some implementations, robot 102 can look forpoints of discontinuity in map 700 and/or route 716. For example, FIG.9A illustrates example route discontinuity 904 between example routeportion 902A and example route portion 902B of example mapped portion900. Mapped portion 900 can be a portion of map 700. Mapped portion 900can comprise objects 906A-906B and clear space 908 there between. Withinclear space 908, a route is illustrated with route portion 902A androute portion 902B. Between route portion 902A and route portion 902B isroute discontinuity 904. Route discontinuity 904 can be indicative atleast in part of an error because robot 102 likely did not go from routeportion 902A to route portion 902B, or vice versa, without going intoany space in-between. In some cases, route discontinuity 904 may not bean issue for robot 102 to navigate mapped route 716 because robot 102can travel across clear space 908 from route portion 902A to routeportion 902B without issue. However, route discontinuity 904, by itselfor in combination with other route discontinuities and/or errors, can beindicative at least in part of mapping errors and/or the quality of map700 (e.g., that map 700 is of poor quality).

In detecting mapping errors and/or evaluating the quality of map 700,robot 102 can consider the size of route discontinuity 904 (e.g., thenumber of pixels, the distance, etc. of route discontinuity 904) andalso if there are other route discontinuities elsewhere in map 700. Insome cases, where route discontinuity 904 is of a size above apredetermined size threshold (e.g., stored in memory 302), robot 102 candetect mapping errors and/or determine that map 700 is of poor quality.The predetermined size threshold can be measured in absolute distancemeasurements using standard units, such as inches, feet, meters, or anyother unit of measurement (e.g., measurements in the metric, US, orother system of measurement) or measured in relative (or non-absolute)units, such as ticks, pixels, percentage of range of a sensor, and thelike. This predetermined size threshold can be determined at least inpart on one or more factors including: the signal resolution and/orfidelity of sensors (e.g., of sensor units 314) of robot 102; thecomplexity of environment 100; empirical correlations between routediscontinuities with robot 102 and mapping errors/poor map quality; theability of robot 102 to navigate with route discontinuity 904; and/orother factors. For example, if the signal resolution and/or fidelity ofsensors of robot 102 are low, robot 102 can expect that there will besome route discontinuity in mapping (e.g., route discontinuity 904) andsuch route discontinuities could be of a larger size. The presence ofthese route discontinuities might not be indicative at least in part ofmapping errors and/or poor map quality, thus the predetermined sizethreshold could be relatively high. In contrast, where the signalresolution and/or fidelity of sensors of robot 102 are high, routediscontinuity 904 may be unexpected, and even a route discontinuity of asmall size might be indicative at least in part of map errors and/orpoor map quality, thus the predetermined size threshold could berelatively low. As another example, a highly complex environment 100 maystrain the mapping and localizing capabilities (e.g., of mapping andlocalization units 312) of robot 102, and discontinuity 904 may beexpected, thus the predetermined size threshold may be relatively high.In contrast, a relatively simple environment 100 may not strain themapping and localizing capabilities of robot 102, and routediscontinuity 904 may not be expected, thus the predetermined sizethreshold may be relatively low. As another example, where safety of anenvironment is a concern, the predetermined size threshold may berelatively low. As another example, robot 102 may have prior maps (ormaps aggregated on a server) whose map quality (and/or lack of mappingerrors) have been independently evaluated (e.g., by a user or otherperson). Robot 102 can then consider the correlation between the size ofroute discontinuities in determining the predetermined size threshold indetecting mapping errors and/or evaluating the quality of map 700 basedat least in part on discontinuity 904 and/or other routediscontinuities. As another example, the predetermined size thresholdmay be based at least in part on the ability of robot 102 to navigatemap 700. After route discontinuity 904 becomes larger than apredetermined size threshold, robot 102 may no longer be able tonavigate map 700, thus robot 102 can detect mapping errors and/ordetermine map 700 is of poor quality. In any case of detected errorand/or determination of poor quality, robot 102 can then prompt user 604to demonstrate the route again (e.g., via user interface units 322).

Similarly, route discontinuity 904 may be one of a plurality of routediscontinuities of map 700. Robot 102 can consider these other routediscontinuities. If the number of route discontinuities is above apredetermined number threshold (e.g., stored in memory 302), robot 102can detect mapping errors and/or determine that map 700 is of poorquality. For example, this predetermined number threshold can bedetermined at least in part on one or more factors including: the signalresolution and/or fidelity of sensors (e.g., of sensor units 314) ofrobot 102; the complexity of environment 100; empirical correlationsbetween route discontinuities with robot 102 and mapping errors/mapquality; the ability of robot 102 to navigate with route discontinuity904; and/or other factors. For example, if the signal resolution and/orfidelity of sensors of robot 102 are low, robot 102 can expect thatthere will be some route discontinuity in mapping (e.g., routediscontinuity 904). The presence of these route discontinuities mightnot be indicative at least in part of mapping errors and/or poor mapquality, thus the predetermined number threshold could be relativelyhigh. In contrast, where the signal resolution and/or fidelity ofsensors of robot 102 are high, discontinuity 904 may be unexpected, andthe presence of route discontinuities might be indicative at least inpart of mapping errors and/or poor map quality, thus the predeterminednumber threshold could be relatively low. As another example, a highlycomplex environment 100 may strain the mapping and localizingcapabilities (e.g., of mapping and localization units 312) of robot 102,and route discontinuity 904 may be expected, thus the predeterminednumber threshold may be relatively high. In contrast, a relativelysimple environment 100 may not strain the mapping and localizingcapabilities of robot 102, and route discontinuity 904 may not beexpected, thus the predetermined number threshold may be relatively low.As another example, where safety of an environment is a concern, thepredetermined number threshold may be relatively low. As anotherexample, robot 102 may have prior maps (or maps aggregated on a server)whose map quality (and/or lack of mapping errors) have beenindependently evaluated (e.g., by a user or other person). Robot 102 canthen consider the correlation between the number of routediscontinuities in determining the predetermined number threshold indetecting mapping errors and/or evaluating the quality of map 700 basedat least in part on route discontinuity 904 and/or other routediscontinuities. As another example, the predetermined number thresholdmay be based at least in part on the ability of robot 102 to navigatemap 700. After the predetermined number threshold of routediscontinuities substantially like route discontinuity 904, robot 102may no longer be able to navigate map 700, thus robot 102 can detectmapping errors and/or determine map 700 is of poor quality. In any caseof detected error and/or determination of poor quality, robot 102 canthen prompt the user 604 to demonstrate the route again (e.g., via userinterface units 322).

In some cases, hybrid thresholds can be used where the above describedpredetermined size threshold and predetermined number threshold are usedin combination. For example, the predetermined number threshold, abovewhich map 700 is determined to contain mapping errors and/or be poorquality, may be based at least in part on the number of routediscontinuities above the predetermined size threshold. In the casewhere mapping errors are detected and/or map 700 is determined to be ofpoor quality, robot 102 can then prompt user 604 to demonstrate theroute again (e.g., via user interface units 322).

FIG. 9B illustrates example object discontinuity 924 between exampleobject portion 926A and example object portion 926B of example mappedportion 920. Mapped portion 920 can be a portion of map 700. Asillustrated, route portion 922 may not have any route discontinuities.However, between object portion 926A and object portion 926B, there canbe object discontinuity 924 where a portion of the object has not beenmapped. Object discontinuity 924 can be indicative of an error becauseobject discontinuity 924 is likely an unmapped portion of map portion924 in a position where it should have been mapped. In some cases,object discontinuity 924 may not be an issue for robot 102 to navigatebecause robot 102 could detect the presence of the object with itssensors as it navigates through route portion 922. However, objectdiscontinuity 924, by itself or in combination with otherdiscontinuities and/or other characteristics of mapping errors, can beindicative of mapping errors and/or a poor quality map.

Similar to the detection of mapping errors and/or evaluation of qualitydescribed with reference to FIG. 9A, in evaluating map 700, robot 102can consider the size of object discontinuity 924 (e.g., the number ofpixels, the distance, etc. of object discontinuity 924) and also ifthere are other object discontinuities elsewhere in map 700. In somecases, where object discontinuity 924 is of a size above a predeterminedsize threshold (e.g., stored in memory 302), robot 102 can determinethat map 700 has mapping errors and/or is of poor quality. For example,this predetermined size threshold can be determined at least in part onone or more factors including: the signal resolution and/or fidelity ofsensors (e.g., of sensor units 314) of robot 102; the complexity ofenvironment 100; empirical correlations between object discontinuitieswith robot 102 and mapping errors/map quality; the ability of robot 102to navigate with object discontinuity 924; and/or other factors. Forexample, if the signal resolution and/or fidelity of sensors of robot102 are low, robot 102 can expect that there will be some objectdiscontinuity in mapping (e.g., discontinuity 904) and such objectdiscontinuities could be of a larger size. The presence of these objectdiscontinuities might not be indicative at least in part of mappingerrors and/or poor map quality, thus the predetermined size thresholdcould be relatively high. In contrast, where the signal resolutionand/or fidelity of sensors of robot 102 are high, object discontinuity924 may be unexpected, and even a discontinuity of a small size might beindicative at least in part of mapping errors and/or poor map quality,thus the predetermined size threshold could be relatively low. Asanother example, a highly complex environment 100 may strain the mappingand localizing capabilities (e.g., of mapping and localization units312) of robot 102, and object discontinuity 924 may be expected, thusthe predetermined size threshold may be relatively high. In contrast, arelatively simple environment 100 may not strain the mapping andlocalizing capabilities of robot 102, and object discontinuity 924 maynot be expected, thus the predetermined size threshold may be relativelylow. As another example, where safety of an environment is a concern,the predetermined size threshold may be relatively low. As anotherexample, robot 102 may have prior maps (or maps aggregated on a server)whose map quality (and/or lack of mapping errors) have beenindependently evaluated (e.g., by a user or other person). Robot 102 canthen consider the correlation between the size of object discontinuitiesin determining the predetermined size threshold in detecting mappingerrors and/or evaluating the quality of map 700 based at least in parton object discontinuity 924 and other object discontinuities. As anotherexample, the predetermined size threshold may be based at least in parton the ability of robot 102 to navigate map 700. After objectdiscontinuity 924 becomes larger than a predetermined size, robot 102may no longer be able to navigate map 700, thus robot 102 can detectmapping errors and/or determine map 700 is of poor quality. In any caseof detected error and/or determination of poor quality, robot 102 canthen prompt the user to demonstrate the route again (e.g., via userinterface units 322).

Similarly, object discontinuity 924 may be one of a plurality of objectdiscontinuities of map 700. Robot 102 can consider these other objectdiscontinuities. If the number of object discontinuities is above apredetermined number threshold (e.g., stored in memory 302), robot 102can detect mapping errors and/or determine that map 700 is of poorquality. For example, this predetermined number threshold can bedetermined at least in part on one or more factors including: the signalresolution and/or fidelity of sensors (e.g., of sensor units 314) ofrobot 102; the complexity of environment 100; empirical correlationsbetween object discontinuities with robot 102 and mapping errors/mapquality; the ability of robot 102 to navigate with object discontinuity924; and/or other factors. For example, if the signal resolution and/orfidelity of sensors of robot 102 are low, robot 102 can expect thatthere will be some object discontinuity in mapping (e.g., discontinuity904). The presence of these object discontinuities might not beindicative of mapping errors and/or poor map quality, thus thepredetermined number threshold could be relatively high. In contrast,where the signal resolution and/or fidelity of sensors of robot 102 arehigh, object discontinuity 924 may be unexpected, and the presence ofobject discontinuities might be indicative at least in part of mappingerrors and/or poor map quality, thus the predetermined number thresholdcould be relatively low. As another example, a highly complexenvironment 100 may strain the mapping and localizing capabilities(e.g., of mapping and localization units 312) of robot 102, and objectdiscontinuity 924 may be expected, thus the predetermined numberthreshold may be relatively high. In contrast, a relatively simpleenvironment 100 may not strain the mapping and localizing capabilitiesof robot 102, and object discontinuity 924 may not be expected, thus thepredetermined number threshold may be relatively low. As anotherexample, where safety of an environment is a concern, the predeterminednumber threshold may be relatively low. As another example, robot 102may have prior maps (or maps aggregated on a server) whose map quality(and/or lack of mapping errors) have been independently evaluated (e.g.,by a user or other person). Robot 102 can then consider the correlationbetween the number of object discontinuities in determining thepredetermined number threshold in detect mapping errors and/orevaluating the quality of map 700 based at least in part on objectdiscontinuity 924 and other discontinuities. As another example, thepredetermined number threshold may be based at least in part on theability of robot 102 to navigate map 700. After a predetermined numberof object discontinuities substantially like object discontinuity 924,robot 102 may no longer be able to navigate map 700, thus robot 102 candetect mapping errors and/or determine map 700 is of poor quality. Inany case of detected error and/or determination of poor quality, robot102 can then prompt the user to demonstrate the route again (e.g., viauser interface units 322).

In some cases, hybrid thresholds can be used where the above describedpredetermined size threshold and predetermined number threshold are usedin combination. For example, the predetermined number threshold, abovewhich map 700 is determined to have mapping errors and/or be poorquality, may be based at least in part on the number of objectdiscontinuities above the predetermined size threshold. In the casemapping errors are detected and/or map 700 is determined to be of poorquality, robot 102 can then prompt user 704 to demonstrate the routeagain (e.g., via user interface units 322).

FIG. 9C illustrates an example mapped portion 920 that has discontinuity934, which includes both a route discontinuity and an objectdiscontinuity. Mapped portion 920 can be a portion of map 700.Discontinuity 934 can be a discontinuity between route portion 930 androute portion 932. Discontinuity 934 can also be a discontinuity inobject 936. As described with reference to FIGS. 9A-C, both routediscontinuities and object discontinuities can be indicative at least inpart of mapping errors and/or poor map quality. When robot 102 evaluatesmap 700, robot 102 can consider either route discontinuities or objectdiscontinuities, or both together, in detect mapping errors and/ordetermining the quality of map 700.

As another example, in some implementations, robot 102 can evaluate theamount of overlap between items (e.g., routes, obstacles, or otherobjects) in map 700 in detecting mapping errors and/or determining thequality of map 700. FIG. 10 illustrates example mapped portion 1000having overlapping objects 1002, 1004, 1006. Mapped portion 1000 can bea portion of map 700. As illustrated, objects 1002, 1004, 1006 can bewalls, objects, shelves, etc. that robot 102 detected while creating map700. Based at least in part on the measured positioning and orientationof robot 102, robot 102 mapped objects 1002, 1004, 1006. Because theestimated position and/or orientation of each of objects 1002, 1004,1006 are on top of each other, robot 102 can determine that there hasbeen an error in mapping. In identifying such areas of overlap, robot102 can examine map 700 pixel-by-pixel or region-by-region. In somecases, robot 102 can use a mask and/or filter to find predeterminedshapes within map 700 (e.g., substantially similar to mask 870 modifiedto look for the predetermined shape). The predetermined shapes can bebased at least in part on known errors of robot 102 in mapping, such aspreviously observed transformations of object locations and/or sensorerrors.

Overlap can also be identified at least in part by a heavy density ofdetected objects 1002, 1004, 1006 in and/or around a pixel or region ofpixels. In some cases, robot 102 can detect shapes in map 700, namelyirregularity in shapes. For example, robot 102 can detect entrappedspaces, such as space 1008. In some cases, space 1008 may be a clear,traveled to, and/or navigable space. Space 1008 would not normally occurbetween objects 1002, 1004, 1006 because robot 102 would not have accessto space 1008 as mapped. Accordingly, robot 102 can determine that map700 has mapping errors and/or is of poor quality if it detects space1008. As another example, robot 102 can detect jagged overhangs 1010,1012. The irregularity of the shape can allow robot 102 to determinethat there has been an error mapping in one or more of objects 1002,1004, 1008 because such overhangs would not normally occur inenvironment 100. Accordingly, based at least in part on the irregularityof overhangs 1010, 1012, robot 102 can detect mapping errors and/ordetermine that map 700 is of poor quality.

As another example of a mapping error identifiable through recognizingoverlap, robot 102 (and/or the route robot 102 travels) can berepresented in map 700 as passing through objects. Because it isunlikely that robot 102 would pass through objects, such an occurrencecan be indicative at least in part of a mapping error.

As another example, robot 102 can identify mapping errors and/or thequality of map 700 by comparing map 700 with data from at least one ofrobot 102's sensors. For example, in some implementations, map 700 wasgenerated using at least in part one or more of sensors 560A-560D andone or more of sensors 568A-568B. However, a check on the accuracy ofmap 700 can compare map 700 to data recorded by fewer than all ofsensors 560A-560D and sensors 568A-568B. As one illustrative example,one or more of sensors 568A-B can determine the odometry of robot 102. Arepresentation of a route of robot 102 based only on the odometry can beconsidered a map in the odometry frame. This map in the odometry framecan be compared to map 700, such as using a comparator, subtraction,and/or any other method of comparing maps in this disclosure. If thedeviation between the map in the odometry frame and map 700 exceeds apredetermined threshold (e.g., more than 40%, 50%, 60%, or anypercentage determined based at least in part on empirical determinationsof a correlation to poor map quality), robot 102 can determine thatthere were mapping errors and/or map 700 was of poor quality.

As another example, in some implementations, robot 102 can be configuredto travel in a closed loop (e.g., the end location is substantiallysimilar to the initialization location). It should be noted that robot102 may not always travel in a closed loop. For example, FIG. 1Aillustrated a route that did not form a closed loop becauseinitialization location 104 was illustrated as not in substantially thesame location as end location 114. FIG. 11A illustrates robot 102travelling in example closed loop route 1104, where location 1102 isboth the initialization location and the end location. In this case, ifthe map of route 1104 did not have the initialization location and endlocation approximately at location 1102, robot 102 can detect mappingerrors and/or determine that the map was of poor quality. In some cases,there can be a predetermined distance threshold (e.g., stored in memory302). If the mapped initialization location and end location are notwithin the predetermined distance threshold (e.g., if the distancebetween the initialization location and end location does not exceed thepredetermined distance threshold), robot 102 can detect mapping errorsand/or determine the map is of poor quality. This predetermined distancethreshold can be determined based at least in part on the size of themap (e.g., the predetermined distance threshold can be a percentage ofmap size), sensor resolution and/or fidelity, and/or other factors.

As another example implementation, robot 102 can have an uploaded map ofthe environment stored in memory 302. Robot 102 can then compare map 700to the uploaded map. By way of illustration, robot 102 can utilize oneor more comparators of map evaluation units 324 that compares map 700with an uploaded map on a pixel-by-pixel or region-by-region basis. Insome implementations, uploaded map and/or map 700 may be resized tofacilitate that comparison. Where map 700 is not found to be similar tothe uploaded map on a pixel-by-pixel or region-by-region basis, robot102 can determine that there has been a mapping errors and/or that map700 is of poor quality. Consequently, robot 102 can prompt the user 604to demonstrate the route again (e.g., robot 102 can perform portion 404again).

In some implementations, a percentage similarity can be computed betweenthe uploaded map and map 700, where the percentage similarity reflects,at least in part, how similar the uploaded map is to map 700. Where thepercentage similarity falls below a predetermined threshold (e.g., 70%,80%, 90%, or any percentage indicative at least in part of substantialsimilarity between the uploaded map and map 700), robot 102 candetermine that there has been a mapping error and/or that map 700 is ofpoor quality. Consequently, robot 102 can prompt (e.g., via userinterface units 322) user 604 to demonstrate the route again (e.g.,robot 102 can perform portion 404 again).

In some implementations, the uploaded map can be analyzed for shapes(e.g., shapes of objects or clear spaces). Map 700 can be analyzed forthose same shapes to determine, at least in part, if those same shapesare present in map 700. A mask and/or filter can be used for the searchin some implementations (e.g., substantially similar to mask 870modified to look for the shapes). If the shapes from the uploaded mapare not found in map 700, then robot 102 can determine that there hasbeen a mapping error and/or that map 700 is of poor quality.Consequently, robot 102 can prompt (e.g., via user interface units 322)the user 604 to demonstrate the route again (e.g., robot 102 can performportion 404 again). Similarly, map 700 can be analyzed for shapes (e.g.,shapes of objects or clear spaces), and the uploaded map analyzed to seeif those same shapes are present. In the same way, if robot 102 does notfind detected shapes from map 700 in the uploaded map, robot 102 candetermine that there has been a mapping error and/or that map 700 is ofpoor quality and prompt (e.g., via user interface units 322) the user604 to demonstrate the route again (e.g., robot 102 can perform portion404 again).

In some implementations, robot 102 can analyze map 700 for certainexpected characteristics/features of an environment 100. For example, ina grocery store or similar environment, robot 102 might expect aislesand/or rows of shelves. Where robot 102 does not detect objectsindicative of aisles and/or rows of shelves, or detects too few or toomany, robot 102 can determine map 700 may be of poor quality and/orcontains mapping errors. As another example, there may be a certainlevel of expectation on the complexity of an environment. Where map 700has too many turns or too few turns, robot 102 can determine that map700 may be of poor quality and/or contains mapping errors. As anotherexample, environment 100 can have an expected size. Where the size ofmap 700 is too large or too small, robot 102 can determine that map 700may be of poor quality and/or contains mapping errors. In any of theaforementioned cases where map 700 does not have the certain expectedcharacteristics/features of an environment 100, robot 102 can prompt auser (e.g., user 604 or a user with access to the map on a server) toverify map 700. Accordingly, robot can send the map to the server andreceive a verification of the quality of the map.

In some implementations, machine learning algorithms can be used,wherein robot 102 (e.g., controller 304 of robot 102) learns to identifygood maps and bad maps. For example, robot 102 can have a library ofmaps that have been identified (e.g., hand labeled or machine labeled)as good maps and bad maps. Using supervised or unsupervised algorithmsknown in the art, robot 102 can then learn to associate characteristicsrobot 102 determines across its library as being indicative of a goodmap or a bad map. Accordingly, where robot 102 identifies a map as a badmap, robot 102 can determine that there has been a mapping error and/orthat map 700 is of poor quality and prompt (e.g., via user interfaceunits 322) the user 604 to demonstrate the route again (e.g., robot 102can perform portion 404 again).

In some circumstances, robot 102 can also correct errors in a map 700 ofpoor quality. For example, in some cases, where robot 102 did not travelexactly in a closed loop (e.g., closed loop route 1104), the differencebetween the initialization location and end location can be used tocorrect the odometry of robot 102. For example, robot 102 can take thedifference between the initialization location and end location anddetermine that the difference is indicative of how much the odometrydrifted from the actual. Accordingly, robot 102 can adjust a recordedroute to take into account that determined drift.

As another example, certain mapping errors can result in patterns thatrobot 102 can associate with at least a portion of a corrected map,which can be version of map 700 correcting one or more errors. FIG. 11Billustrates an example where example robot 102 associates an examplemapping error with an example corrected route 1108. For example, map 700can contain a series of drifted routes of substantially similar shapes,such as mapped routes 1106A-1106N, where N is indicative that any numberof mapped routes 1106A-1106N can be mapped. Robot 102 can determine thatsuch drifted mapped routes 1106A-1106N can be indicative at least inpart of a user 604 navigating the same route over and over again. As aresult, robot 102 can then correct mapped routes 1106A-1106N to mappedroute 1108, which is indicative of user 604 navigating the same routerepeatedly. Where map 700 contained mapped routes 1106A-1106N, robot 102can correct mapped routes 1106A-1106N to mapped route 1108 in map 700.Similarly, there can be other error patterns (e.g., drifts and/or othererrors) whose identity can be programmed into robot 102 such that robot102 can automatically correct them. Accordingly robot 102 can correcterrors of map 700.

Robot 102 can also use machine learning to learn to associate errorswith corrections of those errors. For example, robot 102 can store inmemory 302 and/or on a server maps with errors. By way of illustration,in some cases, user 604 can first demonstrate a route. The map createdof the route and the surrounding environment can contain mapping errors.When confronted with the mapping errors, user 604 may remap theenvironment and/or route. Accordingly, robot 102 can have a version of apoor quality map (e.g., with mapping errors that would preventsuccessful navigation) and a version that is not of poor quality (e.g.,without mapping errors that would prevent successful navigation). Robot102 can then associate at least a portion of the poor quality map with acorresponding portion of the remapped version that is not of poorquality. Based on one or more substantially similar associations, robot102 can learn to identify a mapping error that has occurred and thenproduce at least a portion of the corrected map once it has recognizedthe mapping error.

Returning to FIG. 4, after teaching phase 414, robot 102 can then enterautonomous phase 416. In portion 408, robot 102 can detectinitialization location 104 and initialize the position and/ororientation of robot 102. In some implementations, a user can bringrobot 102 to initialization location 104 by driving robot 102, remotecontrolling robot 102, steering robot 102, pushing robot 102, and/or anyother control, such as any control that drives actuator units 318. Insome implementations, robot 102 can return to initialization location104 autonomously. For example, robot 102 can store in memory 302 thelocation of initialization location 104 (e.g., as previously describedwith reference to FIGS. 5B-5E) and return to that location.

In some implementations, robot 102 can detect initialization location104 in a way substantially similar to the systems and methods it used todetect initialization location 104 in portion 402 described withreference to FIGS. 5B-5E as well as elsewhere throughout thisdisclosure. In some cases, when robot 102 returns to initializationlocation 104 in portion 408, robot's 102 position relative to, forexample, one or more of objects 512, 546, 548, 550 will have been storedin memory 302 (e.g., from portion 402). When robot 102 detects it is inthe same relative location with respect to one or more of objects 512,546, 548, 550, robot 102 can determine that robot 102 is ininitialization location 104. In some implementations, robot 102 candetect it is in initialization location 104 based at least in part onwhere the user stopped robot 102. As such, it can assume where the userstopped, and subsequently selected a route as will be described withreference to portion 410, is initialization location 104. In someimplementations, there can be a transmitter (e.g., a transmitter thattransmits communications using RFID, NFC, BLUETOOTH®, radiotransmission, radio frequency field, and/or any other communicationprotocol described in this disclosure) at, or substantially close to,initialization location 104. When robot 102 detects that it is on topof, or substantially close to the transmitter, robot 102 can detect thatrobot 102 is in initialization location 104. In some cases, thetransmitter can have an operable range such that robot 102 can detect acommunication from the transmitter only when it is in the startinglocation. By way of illustrative example, the transmission range of NFCcan be ten centimeters or less. Accordingly, when robot 102 receives atransmission via NFC, robot 102 can detect that it is positioned ininitialization location 104. In some implementations, robot 102 canreceive the transmission from the transmitter and calculate the distanceto the transmitter based at least in part on the attenuation of thesignal strength. In this way, robot 102 can detect how close it is tothe transmitter, and consequently, the position of robot 102 relative tothe transmitter and/or initialization location 104. In someimplementations, robot 102 can determine its location by triangulatingthe signal strength of a plurality of transmitters. In someimplementations, initialization location 104 can be demarcated by a sign(e.g., markings, symbols, lines, etc.) on the floor. When one or moresensors of robot 102 (e.g., of sensor units 314) detect the sign on thefloor, robot 102 can detect that robot 102 is positioned ininitialization location 104.

In portion 410, robot 102 can then select a recorded route to navigateautonomously. In some implementations, the selection of the recordedroute (e.g., route 116) by robot 102 can be based at least in part onuser input. For example, a user can select input 572 on user interface500 (illustrated in FIG. 5A) on display 576, where input 572 can allow auser to select a recorded route of robot 102. After selecting input 572,interface 1200, illustrated in FIG. 12, can appear. FIG. 12 illustratesexample interface 1200, which can be used for route selection. Interface1200 can present a plurality of routes for selection displayed asselectable inputs 1202A-1202F. A user may select one of selectableinputs 1202A-1202F via touch (e.g., in the case display 576 includes atouch screen) and/or any other input mechanism of user interface units322. For example, in some implementations, input 1202F can correspondwith mapped route 716 learned by robot 102. When the user selects input1202F, robot 102 can then select map 700 and mapped route 716 (which isbased upon the user's demonstration of route 116) based at least in parton the user's selection.

In some implementations, robot 102 can automatically select a recordedroute based on the initialization location it detected in portion 408.For example, initialization location 104 can be associated with onlydemonstrated route 116 (or as mapped as mapped route 716). Similarly,robot 102 can have other initialization locations associated with otherdemonstrated routes. Advantageously, having a plurality ofinitialization locations can allow a user to demonstrate, and allowrobot 102 to move autonomously through, a variety of routes. Moreover,by having robot 102 automatically select a recorded route based on theinitialization location, robot 102 can more quickly begin autonomousnavigation with minimal additional user input.

Returning to FIG. 4, in portion 412, robot 102 can then travelautonomously along the selected recorded route in portion 410. Forexample, robot 102 can travel autonomously using map 700 and mappedroute 716.

In following route 716, robot 102 can rely upon at least navigationunits 326, which can process one or more of at least map 700, route 716,and data from sensors 560A-560D and sensors 568A-568B. Sensors560A-560D, as illustrated and described herein with reference to FIG. 6Dand elsewhere in this disclosure, can allow robot 102 to sense objectsin its surrounding. In this way, robot 102 can navigate based at leastin part on map 700 and the detection of nearby objects, wherein robot102 can avoid objects that are detected. For example, these objects maybe temporarily placed and/or transient items, and/or transient and/ordynamic changes to the environment. The detection of nearby objects canalso enable robot 102 to localize itself on map 700 based at least inpart on a determination of the position of the objects robot 102 detectson map 700.

Robot 102 can also utilize sensors 568A-568B for odometry to determineat least in part its position/pose (e.g., distance and/or orientation)relative to an origin, as described with reference to at least FIGS.5B-5D. By using one or more of at least map 700, route 716, sensors560A-560D, and sensors 568A-568B, robot 102 can travel autonomouslythrough route 106, such as illustrated in FIG. 1A, route 126, asillustrated in FIG. 1C, or other autonomous routes through environment100, or any other environment, utilizing at least method 400.

Also while autonomously travelling along route 106, robot 102 canactuate various instruments on robot 102, such as brush 908 and/orsqueegee 616 as learned during portion 404 and/or recorded in map 700.The actuation of learned actions of instruments of a scrubber, or anyother robot form, can also be similarly be performed, such as turningon/off water, spraying water, turning on/off vacuums, moving vacuum hosepositions, gesticulating an arm, raising/lowering a lift, turning acamera and/or any sensor of sensor units 314, and/or any movementdesired for robot 102 to perform an action.

FIG. 13 illustrates an example method 1300 for operating example robot102. Portion 1302 includes detecting a first placement of the robot inan initialization location. Portion 1304 includes creating a map of anavigable route and surrounding environment during a demonstration ofthe navigable route to the robot beginning from the initializationlocation. Portion 1306 includes detecting a second placement of therobot in the initialization location. Portion 1308 includes causing therobot to autonomously navigate at least a portion of the navigable routefrom the initialization location.

As used herein, computer and/or computing device can include, but arenot limited to, personal computers (“PCs”) and minicomputers, whetherdesktop, laptop, or otherwise, mainframe computers, workstations,servers, personal digital assistants (“PDAs”), handheld computers,embedded computers, programmable logic devices, personal communicators,tablet computers, mobile devices, portable navigation aids, J2MEequipped devices, cellular telephones, smart phones, personal integratedcommunication or entertainment devices, and/or any other device capableof executing a set of instructions and processing an incoming datasignal.

As used herein, computer program and/or software can include anysequence or human or machine cognizable steps which perform a function.Such computer program and/or software may be rendered in any programminglanguage or environment including, for example, C/C++, C#, Fortran,COBOL, MATLAB™, PASCAL, Python, assembly language, markup languages(e.g., HTML, SGML, XML, VoXML), and the like, as well as object-orientedenvironments such as the Common Object Request Broker Architecture(“CORBA”), JAVA™ (including J2ME, Java Beans, etc.), Binary RuntimeEnvironment (e.g., BREW), and the like.

As used herein, connection, link, transmission channel, delay line,and/or wireless can include a causal link between any two or moreentities (whether physical or logical/virtual), which enablesinformation exchange between the entities.

It will be recognized that while certain aspects of the disclosure aredescribed in terms of a specific sequence of steps of a method, thesedescriptions are only illustrative of the broader methods of thedisclosure, and may be modified as required by the particularapplication. Certain steps may be rendered unnecessary or optional undercertain circumstances. Additionally, certain steps or functionality maybe added to the disclosed implementations, or the order of performanceof two or more steps permuted. All such variations are considered to beencompassed within the disclosure disclosed and claimed herein.

While the above detailed description has shown, described, and pointedout novel features of the disclosure as applied to variousimplementations, it will be understood that various omissions,substitutions, and changes in the form and details of the device orprocess illustrated may be made by those skilled in the art withoutdeparting from the disclosure. The foregoing description is of the bestmode presently contemplated of carrying out the disclosure. Thisdescription is in no way meant to be limiting, but rather should betaken as illustrative of the general principles of the disclosure. Thescope of the disclosure should be determined with reference to theclaims.

While the disclosure has been illustrated and described in detail in thedrawings and foregoing description, such illustration and descriptionare to be considered illustrative or exemplary and not restrictive. Thedisclosure is not limited to the disclosed embodiments. Variations tothe disclosed embodiments can be understood and effected by thoseskilled in the art in practicing the claimed disclosure, from a study ofthe drawings, the disclosure and the appended claims.

It should be noted that the use of particular terminology whendescribing certain features or aspects of the disclosure should not betaken to imply that the terminology is being re-defined herein to berestricted to include any specific characteristics of the features oraspects of the disclosure with which that terminology is associated.Terms and phrases used in this application, and variations thereof,especially in the appended claims, unless otherwise expressly stated,should be construed as open ended as opposed to limiting. As examples ofthe foregoing, the term “including” should be read to mean “including,without limitation,” “including but not limited to,” or the like; theterm “comprising” as used herein is synonymous with “including,”“containing,” or “characterized by,” and is inclusive or open-ended anddoes not exclude additional, unrecited elements or method steps; theterm “having” should be interpreted as “having at least;” the term “suchas” should be interpreted as “such as, without limitation;” the term‘includes” should be interpreted as “includes but is not limited to;”the term “example” is used to provide exemplary instances of the item indiscussion, not an exhaustive or limiting list thereof, and should beinterpreted as “example, but without limitation;” adjectives such as“known,” “normal,” “standard,” and terms of similar meaning should notbe construed as limiting the item described to a given time period or toan item available as of a given time, but instead should be read toencompass known, normal, or standard technologies that may be availableor known now or at any time in the future; and use of terms like“preferably,” “preferred,” “desired,” or “desirable,” and words ofsimilar meaning should not be understood as implying that certainfeatures are critical, essential, or even important to the structure orfunction of the present disclosure, but instead as merely intended tohighlight alternative or additional features that may or may not beutilized in a particular embodiment. Likewise, a group of items linkedwith the conjunction “and” should not be read as requiring that each andevery one of those items be present in the grouping, but rather shouldbe read as “and/or” unless expressly stated otherwise. Similarly, agroup of items linked with the conjunction “or” should not be read asrequiring mutual exclusivity among that group, but rather should be readas “and/or” unless expressly stated otherwise. The terms “about” or“approximate” and the like are synonymous and are used to indicate thatthe value modified by the term has an understood range associated withit, where the range can be ±20%, ±15%, ±10%, ±5%, or ±1%. The term“substantially” is used to indicate that a result (e.g., measurementvalue) is close to a targeted value, where close can mean, for example,the result is within 80% of the value, within 90% of the value, within95% of the value, or within 99% of the value. Also, as used herein“defined” or “determined” can include “predefined” or “predetermined”and/or otherwise determined values, conditions, thresholds,measurements, and the like.

What is claimed is:
 1. A non-transitory computer-readable storage mediumhaving a plurality of instructions stored thereon, the instructionsbeing executable by a processing apparatus to operate a robot, theinstructions configured to, when executed by the processing apparatus,cause the processing apparatus to: detect a first placement of the robotin an initialization location; create a map of a navigable route andsurrounding environment during a demonstration of the navigable route tothe robot beginning from the initialization location; detect a secondplacement of the robot in the initialization location; and cause therobot to autonomously navigate at least a portion of the navigable routefrom the initialization location.
 2. The non-transitorycomputer-readable storage medium of claim 1, wherein the instructionswhen executed by the processing apparatus, further cause the processingapparatus to evaluate the created map for errors, and based at least inpart on the errors, request to a user to demonstrate the navigable routeagain to the robot.
 3. The non-transitory computer-readable storagemedium of claim 2, wherein the errors include at least one of adiscontinuity of the navigable route in the map and a discontinuity inthe surrounding environment in the map.
 4. The non-transitorycomputer-readable storage medium of claim 1, wherein the instructionswhen executed by the processing apparatus, further cause the processingapparatus to provide instructions to the robot to avoid temporarilyplaced obstacles while autonomously navigating the navigable route. 5.The non-transitory computer-readable storage medium of claim 1, furthercomprising instructions configured to cause the processing apparatus toreceive a selection of the navigable route from a user interface.
 6. Thenon-transitory computer-readable storage medium of claim 1, wherein therobot is a floor cleaner.
 7. The non-transitory computer-readablestorage medium of claim 1, wherein the created map comprises anindication representative at least in part of an action performed by therobot on the navigable route.
 8. The non-transitory computer-readablestorage medium of claim 7, wherein the action is floor cleaning.
 9. Amethod of operating a robot, comprising: detecting an initial placementof the robot in an initialization location; causing a creation of a mapof a navigable route and surrounding environment during a demonstrationof the navigable route to the robot beginning from the initializationlocation; detecting a subsequent placement of the robot in theinitialization location; and causing the robot to autonomously navigateat least a portion of the navigable route from the initializationlocation.
 10. The method of claim 9, further comprising evaluating thecreated map for errors, and based at least in part on the errors,issuing a request to a user to demonstrate the navigable route again tothe robot.
 11. The method of claim 9, wherein the demonstrationcomprises receiving control signals from a user.
 12. The method of claim9, wherein creating the map of a navigable route and surroundingenvironment further comprises sensing the surrounding environment with athree-dimensional sensor.
 13. The method of claim 9, wherein causing therobot to autonomously navigate further comprises receiving a selectionof the navigable route from a user interface.
 14. The method of claim 9,wherein causing the robot to autonomously navigate comprises navigatingusing the map of the navigable route and surrounding environment. 15.The method of claim 9, further comprises mapping on the created map anaction performed by the robot on the navigable route.
 16. The method ofclaim 15, wherein the action comprises cleaning a floor.
 17. Anon-transitory computer-readable storage medium having a plurality ofinstructions stored thereon, the instructions being executable by aprocessing apparatus to operate a robot, the instructions configured to,when executed by the processing apparatus, cause the processingapparatus to create a map of a navigable route and surroundingenvironment during a demonstration of the navigable route to the robotbeginning from an initialization location.
 18. The non-transitorycomputer-readable storage medium of claim 17, wherein the created mapfurther comprises an indication representative at least in part of anaction performed by the robot on the navigable route.
 19. Thenon-transitory computer-readable storage medium of claim 18, wherein theaction is cleaning a floor.
 20. The non-transitory computer-readablestorage medium of claim 17, wherein the demonstration of the navigationroute is a computer simulation.
 21. A robot comprising: a mapping andlocalization unit configured to create a map of a navigable route andsurrounding environment during a demonstration of the navigable route tothe robot beginning from an initialization location; and a navigationunit configured to autonomously navigate the robot using the map. 22.The robot of claim 21, wherein the navigation unit is further configuredto determine not to autonomously navigate at least a portion of thenavigable route.
 23. The robot of claim 21, further comprising a sensorunit configured to generate sensor data indicative at least in part ofobjects within a sensor range of the robot, wherein the navigation unitis further configured to autonomously navigate based at least in part onthe generated sensor data.
 24. The robot of claim 21, further comprisinga first actuator unit configured to actuate a brush.
 25. The robot ofclaim 24, further comprise a processor configured to associate aposition on the map with actuation of the first actuator unit.
 26. Therobot of claim 21, further comprising a communication unit configured tocommunicate with a server, wherein the robot sends the map to the serverand receives a verification of the indicated quality of the map.